CF1547G.How Many Paths?
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given a directed graph G which can contain loops (edges from a vertex to itself). Multi-edges are absent in G which means that for all ordered pairs (u,v) exists at most one edge from u to v . Vertices are numbered from 1 to n .
A path from u to v is a sequence of edges such that:
- vertex u is the start of the first edge in the path;
- vertex v is the end of the last edge in the path;
- for all pairs of adjacent edges next edge starts at the vertex that the previous edge ends on.
We will assume that the empty sequence of edges is a path from u to u .
For each vertex v output one of four values:
- 0 , if there are no paths from 1 to v ;
- 1 , if there is only one path from 1 to v ;
- 2 , if there is more than one path from 1 to v and the number of paths is finite;
- −1 , if the number of paths from 1 to v is infinite.
Let's look at the example shown in the figure.
Then:
- the answer for vertex 1 is 1 : there is only one path from 1 to 1 (path with length 0 );
- the answer for vertex 2 is 0 : there are no paths from 1 to 2 ;
- the answer for vertex 3 is 1 : there is only one path from 1 to 3 (it is the edge (1,3) );
- the answer for vertex 4 is 2 : there are more than one paths from 1 to 4 and the number of paths are finite (two paths: [(1,3),(3,4)] and [(1,4)] );
- the answer for vertex 5 is −1 : the number of paths from 1 to 5 is infinite (the loop can be used in a path many times);
- the answer for vertex 6 is −1 : the number of paths from 1 to 6 is infinite (the loop can be used in a path many times).
输入格式
The first contains an integer t ( 1≤t≤104 ) — the number of test cases in the input. Then t test cases follow. Before each test case, there is an empty line.
The first line of the test case contains two integers n and m ( 1≤n≤4⋅105,0≤m≤4⋅105 ) — numbers of vertices and edges in graph respectively. The next m lines contain edges descriptions. Each line contains two integers ai , bi ( 1≤ai,bi≤n ) — the start and the end of the i -th edge. The vertices of the graph are numbered from 1 to n . The given graph can contain loops (it is possible that ai=bi ), but cannot contain multi-edges (it is not possible that ai=aj and bi=bj for i=j ).
The sum of n over all test cases does not exceed 4⋅105 . Similarly, the sum of m over all test cases does not exceed 4⋅105 .
输出格式
Output t lines. The i -th line should contain an answer for the i -th test case: a sequence of n integers from −1 to 2 .
输入输出样例
输入#1
5 6 7 1 4 1 3 3 4 4 5 2 1 5 5 5 6 1 0 3 3 1 2 2 3 3 1 5 0 4 4 1 2 2 3 1 4 4 3
输出#1
1 0 1 2 -1 -1 1 -1 -1 -1 1 0 0 0 0 1 1 2 1