luogu#P10790. [NOI2024] 树形图

[NOI2024] 树形图

题目背景

由于评测机性能差异,本题时限翻倍。

题目描述

给定一个 nn 个点 mm 条边的简单有向图 GG,顶点从 11nn 编号。其中简单有向图的定义为不存在重边与自环的有向图。

定义顶点 rr 是有向图 GG 的根当且仅当对于 1kn1\leq k\leq n,顶点 rr 到顶点 kk 存在恰好一条有向简单路径,其中简单路径的定义为不经过重复点的路径

定义每个点的种类如下:

  • 若顶点 rr 是图 GG 的根,则称顶点 rr 为图 GG一类点
  • 若顶点 rr 不是图 GG 的一类点,且存在一种删边的方案,使得图 GG 在删去若干条边后得到的图 GG' 满足:所有图 GG 中的一类点都是 GG' 的根,且顶点 rr 也是图 GG' 的根,则称顶点 rr 为图 GG二类点
  • 若顶点 rr 不满足上述条件,则称顶点 rr 为图 GG三类点

根据上述定义,图 GG 的每个点都恰好属于一类点,二类点,三类点之一。你需要判断点 1n1\sim n 分别属于这三个种类中的哪一种。

输入格式

本题有多组测试数据。

输入的第一行包含一个非负整数 cc,表示测试点编号。c=0c=0 表示该测试点为样例。

输入的第二行包含一个正整数 tt,表示测试数据组数。

接下来依次输入每组测试数据,对于每组测试数据:

输入的第一行包含两个正整数 n,mn,m,分别表示有向图的点数和边数。

接下来 mm 行,每行包含两个正整数 u,vu,v,表示一条从 uuvv的有向边。保证 1u,vn1\leq u,v\leq n,且给定的有向图 GG 不存在重边与自环。

输出格式

对于每组数据,输出一行包含一个长度恰好为 nn 的字符串 ss 表示每个点的种类。其中 si=1s_i=1 表示点 ii一类点si=2s_i=2 表示点 ii二类点si=3s_i=3 表示点 ii三类点

0
2
4 7
2 1
4 1
1 4
2 3
3 4
2 4
4 3
4 5
1 2
2 3
2 4
3 1
4 3
3233
2211
见 graphee2.in/ans
这个样例满足测试点 2 的约束条件

见 graphee3.in/ans
这个样例满足测试点 3,4 的约束条件

见 graphee4.in/ans
这个样例满足测试点 5,6 的约束条件

见 graphee5.in/ans
这个样例满足测试点 8,9 的约束条件

见 graphee6.in/ans
这个样例满足测试点 14,15 的约束条件

提示

【样例 1 解释】

样例 11 共包含两组测试数据。

对于第一组测试数据,输入的图如下:

由于 1,3,41,3,4 均不存在到达 22 的路径,因此 1,3,41,3,4 均为三类点。由于 2211 的有向简单路径共有三条:212\to 12412\to 4\to 123412\to 3\to 4\to 1,因此 22 不是一类点。删去边 141\to 4414\to 1343\to 4434\to 3 后,221,3,41,3,4 的有向简单路径均唯一,因此 22 是图 GG' 的根,即 22 是二类点。

对于第二组测试数据,输入的图如下:

容易发现 3,43,4 均为一类点,删去边 232\to 3 后,每个点到其他所有点的有向简单路径均唯一,因此 1,21,2 均为二类点。

【数据范围】

对于所有测试数据保证:1t101\leq t\leq 102n1052\leq n\leq 10^51m2×1051\leq m\leq 2\times 10^5,且图 GG 不存在重边与自环。

测试点编号 tt\leq nn\leq mm\leq 特殊性质
11 33 1010 2020
22 1010 10310^3 20002000 A
3,43,4 B
5,65,6
77 10510^5 2×1052\times 10^5 A
8,98,9 BC
101310\sim 13 B
14,1514,15 C
162016\sim 20
  • 特殊性质 A:保证不存在一类点。
  • 特殊性质 B:保证不存在二类点。
  • 特殊性质 C:保证编号为 11 的点为图 GG 的一类点。