题目描述
黑白精灵原本快乐地生活在一个王国里,王国的布局可以简化成一张无向图,但是有天发生了地震,导致有的道路变成了单行道(有向边),有的道路甚至被直接摧毁,众所周知,同色相斥,异色相吸,现在问你每个精灵找到异色精灵所要经过的最短距离是多少?
输入
第一行两个整数N, M(1 <= N <= 1e5, 0 <= M <= min(n * (n - 1) / 2, 1e5)),表示王国里城市的点数和边数,注意每个点上只有一只精灵。接下来M行每行两个整数u, v(1 <= u, v <= n),表示u到v有一条有向边。最后一行输入N个整数组成的数组a,(0 <= a[i] <= 1),表示该精灵是黑色还是白色。
输出
一行N个整数,表示该精灵到达异色精灵所需要经过的最短距离,每条边的权值都为1。若无法到达异色精灵,输出-1。
7 5
1 2
2 3
3 4
5 6
7 5
1 0 0 1 0 1 1