#P1086. 【模板】强连通分量(Tarjan 缩点)
显示设置
本题导航点一下展开
我的笔记
✕
【模板】强连通分量(Tarjan 缩点)
题目描述
给定一张 个点、 条边的有向图,结点编号 。图中可能有重边,也可能有自环。
如果一个点集中的任意两个点都能互相到达,就称这个点集是一个强连通分量(极大强连通子图)。请你求出这张图的强连通分量个数,并给出每个点所属的分量编号。
编号规则:把每个分量中编号最小的点拿出来,按这个最小值从小到大排序,依次编号为 。
输入格式
第一行两个整数 。
接下来 行,每行两个整数 ,表示一条从 指向 的有向边。
输出格式
第一行一个整数 ,表示强连通分量个数。
第二行 个整数,第 个数表示结点 所属的分量编号。
输入输出样例 #1
输入 #1
5 4
1 2
2 3
3 1
4 5
输出 #1
3
1 1 1 2 3
说明
数据范围
- 对于 的数据,,。