P1075星门待群钥gateway

时间限制 1500 ms内存限制 512 MiB通过率 —
显示算法标签最短路 · 拓扑排序 · 优先队列

【题目背景】

穿过云海后,tfbz 抵达了由古老星门连接的高空驿站。每座星门都在等待若干枚散落于其他区域的星钥,只有群钥尽数归位,通往内陆的航路才会真正开启。

【题目描述】

驿站群中共有 nn 个区域,依次编号为 1n1\sim n。每个区域都保存着一枚星钥,当探索信号首次进入一个区域时,这里的星钥便立即归位。区域之间有 mm 条单向航路,第 jj 条航路从区域 uju_j 通向区域 vjv_j,沿这条航路传递探索信号需要 wjw_j 个单位时间。

探索信号最初在 00 时刻进入区域 11。一旦某个区域被信号进入,就可以立即从这里沿任意航路继续传递,并且不同航路上的传递可以同时进行。

每个区域还对应一座星门。区域 ii 的星门要求若干个前置区域中的星钥先归位。信号只有同时满足下面两个条件,才能进入区域 ii

  • 已经有一束信号沿某条航路抵达区域 ii
  • 区域 ii 要求的所有前置区域中的星钥都已经归位。

若信号沿航路提前抵达,它会停留在星门前等待,直到全部前置条件满足。区域 11 不要求任何前置区域。

题目保证所有区域最终都能够被信号进入。请你求出信号首次进入每个区域的最早时刻。

形式化题意:给定一张带非负边权的有向图与每个区域的前置集合 prei\operatorname{pre}_i,求逐点最小非负整数序列 {t}\{t\},满足

t1=0,ti=max{minj:vj=i{tuj+wj}, maxpprei{tp}}(2in),t_1=0,\qquad t_i=\max\left\{\min_{j:v_j=i}\{t_{u_j}+w_j\},\ \max_{p\in\operatorname{pre}_i}\{t_p\}\right\}\quad(2\leq i\leq n),

其中空集合的最大值约定为 00

【输入格式】

从文件 gateway.in\textbf{\textit{gateway.in}} 中读入数据。

本题包含多组测试数据。

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

对于每组测试数据:

第一行包含两个整数 n,mn,m,分别表示区域数量与单向航路数量。

接下来 mm 行,第 jj 行包含三个整数 uj,vj,wju_j,v_j,w_j,表示一条从区域 uju_j 通向区域 vjv_j、用时为 wjw_j 的航路。

接下来 nn 行,第 ii 行首先包含一个非负整数 kik_i,表示区域 ii 要求的前置区域数量,随后包含 kik_i 个互不相同的正整数,表示这些前置区域的编号。

【输出格式】

输出到文件 gateway.out\textbf{\textit{gateway.out}} 中。

对于每组测试数据输出一行 nn 个整数,第 ii 个整数表示信号首次进入区域 ii 的最早时刻。

【样例 1 输入】

0 24 41 2 31 3 22 4 23 4 1001 21 33 31 2 51 3 13 2 101 30

【样例 1 输出】

0 3 3 40 2 1

【说明/提示】

【样例 1 解释】

在第一组测试数据中,信号会在第 22 个单位时间抵达区域 33 的星门,但区域 33 仍在等待区域 22。区域 22 在第 33 个单位时间被进入,此时区域 33 也可以立即被进入。随后信号再用 11 个单位时间抵达区域 44,因此区域 44 的最早进入时刻为 44

【样例 2】

见选手目录下的 gateway/gateway2.in\textbf{\textit{gateway/gateway2.in}}gateway/gateway2.ans\textbf{\textit{gateway/gateway2.ans}}

该组样例符合测试点 131\sim 3 的数据范围。

【样例 3】

见选手目录下的 gateway/gateway3.in\textbf{\textit{gateway/gateway3.in}}gateway/gateway3.ans\textbf{\textit{gateway/gateway3.ans}}

该组样例符合测试点 474\sim 7 的数据范围。

【样例 4】

见选手目录下的 gateway/gateway4.in\textbf{\textit{gateway/gateway4.in}}gateway/gateway4.ans\textbf{\textit{gateway/gateway4.ans}}

该组样例符合测试点 8118\sim 11 的数据范围。

【样例 5】

见选手目录下的 gateway/gateway5.in\textbf{\textit{gateway/gateway5.in}}gateway/gateway5.ans\textbf{\textit{gateway/gateway5.ans}}

该组样例符合测试点 121512\sim 15 的数据范围。

【样例 6】

见选手目录下的 gateway/gateway6.in\textbf{\textit{gateway/gateway6.in}}gateway/gateway6.ans\textbf{\textit{gateway/gateway6.ans}}

该组样例符合测试点 162016\sim 20 的数据范围。

\newpage

【数据范围】

对于 100%100\% 的数据,保证 1T101\leq T\leq 101n2×1051\leq n\leq 2\times 10^50m,s5×1050\leq m,s\leq 5\times 10^51uj,vjn1\leq u_j,v_j\leq nujvju_j\ne v_j0wj1090\leq w_j\leq 10^9,其中 s=kis=\sum k_i。对于同一个测试点,保证 n2×105\sum n\leq 2\times 10^5m,s5×105\sum m,\sum s\leq 5\times 10^5

测试点编号nnm,sm,s特殊性质
131\sim 3100\leq 100500\leq 500
474\sim 72×105\leq 2\times 10^55×105\leq 5\times 10^5B
8118\sim 112×105\leq 2\times 10^55×105\leq 5\times 10^5A
121512\sim 153×103\leq 3\times 10^35×105\leq 5\times 10^5
162016\sim 202×105\leq 2\times 10^55×105\leq 5\times 10^5

特殊性质 A:每条航路均满足 uj<vju_j<v_j,每个前置区域的编号也都小于等待它的区域编号。

特殊性质 B:所有区域都不要求前置区域,也就是 s=0s=0

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解