luogu#P11541. [Code+#5] 路路的图

[Code+#5] 路路的图

题目背景

题目来源:link

题目描述

路路是一个喜欢强连通分量的孩子。他非常喜欢对一张图求出其强连通分量。他认为这个操作是好的。但他并不是总有能力完成这件事。现在,路路给你一张图 GG,希望你帮他求出这张图的每个强连通分量。由于这张图的边数特别的多,他不会直接输入这张图,而是告诉你它的构造方法:

给出一棵 nn 个点(编号为 11nn)的无根树 TTmm 条指令 (ai,bi,ci)(a_i,b_i,c_i)。图 GG 刚开始 nn 个点,编号也为 11nn,并且没有边。对于每一条指令 (ai,bi,ci)(a_i,b_i,c_i),如果在树上 bib_ixx 的最短路径长度(经过的边数)不超过 cic_i,那么你会在 GG 中加入一条从 aia_i 连向 xx 的有向边。

请你帮帮他。

输入格式

第一行两个整数 nnmm

接下来 n1n-1 行,每行两个整数 aabb,表示树 TT 中的一条边 (a,b)(a,b)

接下来 mm 行,每行三个整数 ai,bi,cia_i,b_i,c_i,表示每一条指令。

输出格式

你将会需要输出 nn 个整数。其中第 ii 个整数 pip_i 这么输出:

  • p1=1p_1 = 1

  • 如果点 ii 和点 1122、……、(i1)(i-1) 都不在同一个强连通分量中,那么 pi=1+max{p1,p2,,pi1}p_i = 1 + \max\{p_1,p_2,\cdots,p_{i-1}\}

  • 否则,假设 ii 和点 j<ij< i 在一个强连通分量中,并且和点 1122、……、(j1)(j-1) 都不在同一个强连通分量中,那么 pi=pjp_i = p_j

7 3
1 2
1 3
3 4
4 5
3 6
2 7
5 6 4
1 4 3
4 6 4

1 2 3 1 1 4 5

见附件 down\2.in
见附件 down\2.out 

提示

数据范围:

$\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}$

对于所有数据,n105,m2×105,cinn\le 10^5,m\le 2\times 10^5, c_i\le n

样例解释:

第一组指令往 GG 中加入了从 55 连向每个点的有向边;

第二组指令往 GG 中加入了从 11 连向 1,2,3,4,5,61,2,3,4,5,6 的有向边;

第三组指令往 GG 中加入了从 44 连向每个点的有向边;

最后的强连通分量为 {1,4,5}\{1,4,5\}{2}\{2\}{3}\{3\}{6}\{6\}{7}\{7\}

:由于数据缺失,仅有 99 组测试点。