配点 : 600 点
問題文
高橋君は家の周りをあてもなく歩き回ることにしました。
散歩の間、高橋君は地点 1, 地点 2, …, 地点 N の N か所の地点を歩き回ります。ここで、地点 1 は自宅です。
地点間に道が存在するような地点の組は M 組あります。 i 番目の組を (ai,bi) とした時、地点 ai と地点 bi を双方向に結ぶ長さ d (1≤d≤T) キロメートルの道は pi,d 本あります。
高橋君は自宅を出発して T キロメートル歩いて自宅に戻る散歩コースの本数が知りたくなりました。ここで、長さ T キロメートルの散歩コースは次のように定義されます。
- 地点と道を交互に並べた列 v0=1,e0,v1,…,ek−1,vk=1 であって、ei (0≤i≤k−1) が vi と vi+1 を結んでいて、 ei の長さの和が T キロメートルである。
あなたは高橋君のかわりに条件を満たす散歩コースの本数を 998244353 で割ったあまりを求めてください。ただし、2 つの散歩コースは列として異なるときに異なるとみなされます。
制約
- 2≤N≤10
- $1 \leq M \leq \min \left(10, \frac{N(N-1)}{2} \right)$
- 1≤T≤4×104
- 1≤ai<bi≤N
- i=j ならば (ai,bi)=(aj,bj)
- 0≤pi,j<998244353
入力
入力は以下の形式で標準入力から与えられる。
N M T
a1 b1
p1,1 p1,2 … p1,T
⋮
aM bM
pM,1 pM,2 … pM,T
出力
条件を満たす散歩コースの本数を 998244353 で割ったあまりを出力せよ。
3 2 2
1 2
1 0
1 3
2 0
5
高橋君の家の周りには、
- 地点 1 と地点 2 を結ぶ長さ 1 キロメートルの道が 1 本
- 地点 1 と地点 3 を結ぶ長さ 1 キロメートルの道が 2 本
あります。条件を満たすコースは
- 地点 1 → 地点 2 → 地点 1 の順に巡るコースが 1×1=1 通り
- 地点 1 → 地点 3 → 地点 1 の順に巡るコースが 2×2=4 通り
の計 5 通りです。
3 3 4
1 2
3 0 0 0
1 3
0 1 0 0
2 3
2 0 0 0
130
高橋君の家の周りには、
- 地点 1 と地点 2 を結ぶ長さ 1 キロメートルの道が 3 本
- 地点 1 と地点 3 を結ぶ長さ 2 キロメートルの道が 1 本
- 地点 2 と地点 3 を結ぶ長さ 1 キロメートルの道が 2 本
あります。条件を満たすコースは、経由する地点を列挙すると
- 地点 1 → 地点 2 → 地点 1 → 地点 2 → 地点 1
- 地点 1 → 地点 2 → 地点 3 → 地点 1
- 地点 1 → 地点 2 → 地点 3 → 地点 2 → 地点 1
- 地点 1 → 地点 3 → 地点 1
- 地点 1 → 地点 3 → 地点 2 → 地点 1
の 5 パターンがあり、本数は上から順に 81 通り、 6 通り、 36 通り、 1 通り、 6 通りとなります。
2 1 5
1 2
31415 92653 58979 32384 62643
844557977