P11541 [Code+#5] 路路的图
题目背景
**题目来源:**[link](https://www.gitlink.org.cn/thusaa/codeplus5)。
题目描述
路路是一个喜欢强连通分量的孩子。他非常喜欢对一张图求出其强连通分量。他认为这个操作是好的。但他并不是总有能力完成这件事。现在,路路给你一张图 $G$,希望你帮他求出这张图的每个强连通分量。由于这张图的边数特别的多,他不会直接输入这张图,而是告诉你它的构造方法:
给出一棵 $n$ 个点(编号为 $1$ 到 $n$)的无根树 $T$ 和 $m$ 条指令 $(a_i,b_i,c_i)$。图 $G$ 刚开始 $n$ 个点,编号也为 $1$ 到 $n$,并且没有边。对于每一条指令 $(a_i,b_i,c_i)$,如果在树上 $b_i$ 到 $x$ 的最短路径长度(经过的边数)不超过 $c_i$,那么你会在 $G$ 中加入一条从 $a_i$ 连向 $x$ 的有向边。
请你帮帮他。
输入格式
第一行两个整数 $n$、$m$;
接下来 $n-1$ 行,每行两个整数 $a$、$b$,表示树 $T$ 中的一条边 $(a,b)$;
接下来 $m$ 行,每行三个整数 $a_i,b_i,c_i$,表示每一条指令。
输出格式
你将会需要输出 $n$ 个整数。其中第 $i$ 个整数 $p_i$ 这么输出:
- $p_1 = 1$;
- 如果点 $i$ 和点 $1$、$2$、……、$(i-1)$ 都不在同一个强连通分量中,那么 $p_i = 1 + \max\{p_1,p_2,\cdots,p_{i-1}\}$;
- 否则,假设 $i$ 和点 $j< i$ 在一个强连通分量中,并且和点 $1$、$2$、……、$(j-1)$ 都不在同一个强连通分量中,那么 $p_i = p_j$。
说明/提示
**数据范围:**
$\def\arraystretch{1.21}
\begin{array}{|c|c|c|}\hline
\bold{\small{子任务}}&\textbf{score}&\textbf{constraints}\\\hline
\text{A}&30&c_i\le n\le 50,m\le 100\\\hline
\text{B}&30&c_i\le50\\\hline
\text{C}&30&\small{无特殊限制}\\\hline
\end{array}$
对于所有数据,$n\le 10^5,m\le 2\times 10^5, c_i\le n$。
**样例解释:**
第一组指令往 $G$ 中加入了从 $5$ 连向每个点的有向边;
第二组指令往 $G$ 中加入了从 $1$ 连向 $1,2,3,4,5,6$ 的有向边;
第三组指令往 $G$ 中加入了从 $4$ 连向每个点的有向边;
最后的强连通分量为 $\{1,4,5\}$、$\{2\}$、$\{3\}$、$\{6\}$、$\{7\}$。
**注**:由于数据缺失,仅有 $9$ 组测试点。