CF1547G.How Many Paths?

提高+/省选-

通过率:0%

时间限制:4.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a directed graph GG which can contain loops (edges from a vertex to itself). Multi-edges are absent in GG which means that for all ordered pairs (u,v)(u, v) exists at most one edge from uu to vv. Vertices are numbered from 11 to nn.

A path from uu to vv is a sequence of edges such that:

  • vertex uu is the start of the first edge in the path;
  • vertex vv 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 uu to uu.

For each vertex vv output one of four values:

  • 00, if there are no paths from 11 to vv;
  • 11, if there is only one path from 11 to vv;
  • 22, if there is more than one path from 11 to vv and the number of paths is finite;
  • −1-1, if the number of paths from 11 to vv is infinite.

Let's look at the example shown in the figure.

Then:

  • the answer for vertex 11 is 11: there is only one path from 11 to 11 (path with length 00);
  • the answer for vertex 22 is 00: there are no paths from 11 to 22;
  • the answer for vertex 33 is 11: there is only one path from 11 to 33 (it is the edge (1,3)(1, 3));
  • the answer for vertex 44 is 22: there are more than one paths from 11 to 44 and the number of paths are finite (two paths: [(1,3),(3,4)][(1, 3), (3, 4)] and [(1,4)][(1, 4)]);
  • the answer for vertex 55 is −1-1: the number of paths from 11 to 55 is infinite (the loop can be used in a path many times);
  • the answer for vertex 66 is −1-1: the number of paths from 11 to 66 is infinite (the loop can be used in a path many times).

给你一个有向图 GG,其中可能包含自环(即从一个顶点指向其自身的边)。图 GG 中不存在重边,这意味着对任意有序顶点对 (u,v)(u, v),至多存在一条从 uu 到 vv 的边。顶点编号为 11 到 nn。

从 uu 到 vv 的一条路径是指满足以下条件的一条边序列:

  • 顶点 uu 是该路径中第一条边的起点;
  • 顶点 vv 是该路径中最后一条边的终点;
  • 对于任意相邻的两条边,后一条边的起点等于前一条边的终点。

我们约定:空边序列是顶点 uu 到自身的一条路径(即长度为 00 的路径)。

对每个顶点 vv,输出以下四个值之一:

  • 00:若不存在从 11 到 vv 的路径;
  • 11:若恰好存在一条从 11 到 vv 的路径;
  • 22:若存在多于一条从 11 到 vv 的路径,且路径总数有限;
  • −1-1:若从 11 到 vv 的路径数量无限。

请参考下图所示示例:

则:

  • 顶点 11 的答案为 11:仅存在一条从 11 到 11 的路径(即长度为 00 的空路径);
  • 顶点 22 的答案为 00:不存在从 11 到 22 的路径;
  • 顶点 33 的答案为 11:仅存在一条从 11 到 33 的路径(即边 (1,3)(1, 3));
  • 顶点 44 的答案为 22:存在多于一条从 11 到 44 的路径,且路径总数有限(共两条:[(1,3),(3,4)][(1, 3), (3, 4)] 和 [(1,4)][(1, 4)]);
  • 顶点 55 的答案为 −1-1:从 11 到 55 的路径数量无限(可在路径中多次使用该自环);
  • 顶点 66 的答案为 −1-1:从 11 到 66 的路径数量无限(可在路径中多次使用该自环)。

输入格式

The first contains an integer tt (1≤t≤1041 \le t \le 10^4) — the number of test cases in the input. Then tt test cases follow. Before each test case, there is an empty line.

The first line of the test case contains two integers nn and mm (1≤n≤4⋅105,0≤m≤4⋅1051 \le n \le 4 \cdot 10^5, 0 \le m \le 4 \cdot 10^5) — numbers of vertices and edges in graph respectively. The next mm lines contain edges descriptions. Each line contains two integers aia_i, bib_i (1≤ai,bi≤n1 \le a_i, b_i \le n) — the start and the end of the ii-th edge. The vertices of the graph are numbered from 11 to nn. The given graph can contain loops (it is possible that ai=bia_i = b_i), but cannot contain multi-edges (it is not possible that ai=aja_i = a_j and bi=bjb_i = b_j for i≠ji \ne j).

The sum of nn over all test cases does not exceed 4⋅1054 \cdot 10^5. Similarly, the sum of mm over all test cases does not exceed 4⋅1054 \cdot 10^5.

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)—— 表示输入中测试用例的数量。随后是 tt 个测试用例。每个测试用例之前均有一空行。

每个测试用例的第一行包含两个整数 nn 和 mm(1≤n≤4⋅105, 0≤m≤4⋅1051 \le n \le 4 \cdot 10^5,\ 0 \le m \le 4 \cdot 10^5)—— 分别表示图中的顶点数和边数。接下来的 mm 行描述各条边,每行包含两个整数 aia_i、bib_i(1≤ai,bi≤n1 \le a_i, b_i \le n)—— 表示第 ii 条边的起点与终点。图中顶点编号为 11 到 nn。所给图可包含自环(即可能出现 ai=bia_i = b_i),但不能包含重边(即对任意 i≠ji \ne j,不可能同时满足 ai=aja_i = a_j 且 bi=bjb_i = b_j)。

所有测试用例的 nn 之和不超过 4⋅1054 \cdot 10^5;同理,所有测试用例的 mm 之和也不超过 4⋅1054 \cdot 10^5。

输出格式

Output tt lines. The ii-th line should contain an answer for the ii-th test case: a sequence of nn integers from −1-1 to 22.

输出 tt 行。第 ii 行应包含第 ii 个测试用例的答案:一个由 nn 个整数组成的序列,每个整数取值范围为 −1-1 到 22(含端点)。

输入输出样例

  • 输入#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

输入解题思路,AI测评打分。不知道怎么写?

首页