当前没有测试数据。
游走距离
题目描述
在比特镇一共有n个街区,编号依次为1到n,它们之间通过若干条单向道路连接。
比特镇的交通系统极具特色,除了m条单向道路之外,每个街区还有一个编码vali,不同街区可能拥有相同的编码。如果vali&valj=valj,即vali在二进制下与valj做与运算等于valj,那么也会存在一条额外的从i出发到j的单向道路。
Byteasar现在位于1号街区,他想知道通过这些道路到达每一个街区最少需要多少时间。因为比特镇的交通十分发达,你可以认为通过每条道路都只需要1单位时间。
输入格式
第一行包含两个正整数n,m,表示街区的总数以及道路的总数。
第二行包含n个正整数val1,val2,…,valn,分别表示每个街区的编码。
接下来m行,每行包含两个正整数ui,vi,表示一条单向道路,起点为ui,终点为vi。
输出格式
输出n行,每行一个整数,其中第i行输出到达第i个街区的最少时间,如果无法到达则输出−1。
数据范围与提示
| 测试点编号 |
n |
m |
vali |
| 1 |
=5 |
≤10 |
<24 |
| 2 |
| 3 |
=2000 |
≤5000 |
<210 |
| 4 |
| 5 |
=2×105 |
≤3×105 |
|
| 6 |
<215 |
| 7 |
| 8 |
<220 |
| 9 |
| 10 |
样例
5 2
5 4 2 3 7
1 4
2 3
0
1
2
1
-1