OJ现已增加邮箱找回密码功能,还没有绑定邮箱的同学们请抓紧时间,以免密码丢失无法找回


问题1289--精灵王国

1289: 精灵王国

时间限制: 1 Sec  内存限制: 128 MB
提交: 95  解决: 17
[提交] [状态] [讨论版] [命题人:]

题目描述

黑白精灵原本快乐地生活在一个王国里,王国的布局可以简化成一张无向图,但是有天发生了地震,导致有的道路变成了单行道(有向边),有的道路甚至被直接摧毁,众所周知,同色相斥,异色相吸,现在问你每个精灵找到异色精灵所要经过的最短距离是多少?

输入

第一行两个整数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。

样例输入 Copy

7 5
1 2
2 3
3 4
5 6
7 5
1 0 0 1 0 1 1

样例输出 Copy

1 2 1 -1 1 -1 1

来源/分类

图论