配点 : 800 点
問題文
N 頂点 M 辺からなる有向グラフ G が与えられます.頂点には 1,2,…,N の番号がついています.i 番目の辺は ai から bi に向かう有向辺で,ai<bi が成り立っています.
正整数列 W=(W1,W2,…,WN) の美しさを,次が成り立つような正整数 x の最大値として定義します.
- G における頂点 1 から頂点 N への任意のパス (v1,…,vk) (v1=1,vk=N) に対し,∑i=1kWvi は x の倍数である.
整数列 A=(A1,A2,…,AN) が与えられます.正整数列 W=(W1,…,WN) を,Ai=−1⟹Wi=Ai を満たすように定めるとき,その美しさとしてありうる最大値を求めてください.ただし,最大値が存在しない場合には -1
を出力してください.
制約
- 2≤N≤3×105
- 1≤M≤3×105
- 1≤ai<bi≤N
- i=j ならば (ai,bi)=(aj,bj)
- 与えられるグラフ G において,頂点 1 から頂点 N へのパスが存在する.
- Ai=−1 または 1≤Ai≤1012
入力
入力は以下の形式で標準入力から与えられます.
N M
a1 b1
⋮
aM bM
A1 A2 … AN
出力
正整数列 W の美しさとしてありうる最大値を出力してください.ただし,最大値が存在しない場合には -1
を出力してください.
4 4
1 2
1 3
2 4
3 4
-1 3 7 -1
4
頂点 1 から頂点 N へのパスは,(1,2,4), (1,3,4) の 2 個です.
例えば W=(5,3,7,8) の美しさは 4 となります.実際,W1+W2+W4=16, W1+W3+W4=20 はともに 4 の倍数です.
4 5
1 2
1 3
2 4
3 4
1 4
-1 3 7 -1
1
頂点 1 から頂点 N へのパスは,(1,2,4), (1,3,4), (1,4) の 3 個です.
例えば W=(5,3,7,8) の美しさは 1 となります.
4 4
1 2
1 3
2 4
3 4
3 -1 -1 7
-1
例えば W=(3,10100,10100,7) の美しさは 10100+10 となります.W の美しさをいくらでも大きくできるため,その最大値は存在しません.
5 5
1 3
3 5
2 3
3 4
1 4
2 -1 3 -1 4
9