P4019 多边形染色

题目描述

Flokirie 有一个美丽的凸 $n$ 边形,顶点编号为 $1$ 到 $n$,每条边连接顶点 $i$ 和 $i+1$。特别的,顶点 $n$ 与顶点 $1$ 相连 他想把每个顶点都染成某一种颜色 $k(k \le c)$,且相邻顶点颜色不能相同。 他想知道所有可行方案共有多少。于是他在纸上算了算,$5$ 分钟就解决了这题。 于是他觉得太 low 了,便定义了以下骚操作。 1. `1 x p`:表示第 $x$ 个顶点必须染颜色 $p$。 2. `2 x p`:表示第 $x$ 个顶点必须不染颜色 $p$。 3. `3 x y`:表示更改第 $x$ 个顶点与第 $y$ 个顶点之间边的属性(保证 $y=x±1$,且 $x,y≠1,n$),即第 $x$ 个顶点必须与第 $y$ 个顶点颜色相同。 现在,他想知道所有可行的方案共有多少种。由于结果可能过大,你只需输出它对 $987654321$ 取模的结果即可。

输入格式

第一行,三个正整数 $n$,$m$,$c$,表示多边形边数、操作个数、颜色个数。 之后 $m$ 行,每行三个正整数表示一个操作,具体意义见题目描述。

输出格式

一行一个整数,为所有可行操作和模上 $987654321$ 的结果。

说明/提示

| 测试点编号 | $n$ | $m$ | $c$ | |:-:|:-:|:-:|:-:| | $1\sim 2$ | $3\le n\le 10$ | $0\le m\le 10$ | $1\le c\le 5$ | | $3\sim 4$ | $3\le n\le 100$ | $0\le m\le 30$ | $1\le c\le 8$ | | $5$ | $3\le n\le 2\times 10^3$ | $m=0$ | $1\le c\le 10$ | | $6$ | $3\le n\le 2\times 10^3$ | $0\le m\le 100$ | $1\le c\le 10$ | | $7$ | $3\le n\le 5\times 10^4$ | $m=0$ | $1\le c\le 10$ | | $8$ | $3\le n\le 5\times 10^4$ | $0\le m\le500$ | $1\le c\le 10$ | | $9\sim 10$ | $3\le n\le 5\times 10^4$ | $0\le m\le10^3$ | $1\le c\le 10$ | 保证对于 $100\%$ 的数据,$3\le n\le 5\times 10^4,0\le m\le10^3, 1\le c\le10$。