luogu#P11531. [THUPC2025 初赛] 检查站

[THUPC2025 初赛] 检查站

题目描述

小 I 是一个巨大的铁路公司的主管,他管理着 nn 个火车站,用 11nn 的整数给它们编号。铁路公司有 cc 个分部,第 ii 个分部的办公室位于火车站 pip_i。可能有火车站没有分部办公室,一个火车站也有可能有多个分部办公室。

nn 个火车站之间由 mm 条单向铁路连接,其中第 ii 条铁路由火车站 uiu_i 连向 viv_i,属于分部 rir_i 管辖。为了保证管理方便,分部 rir_i 的办公室要么在 uiu_i,要么在 viv_i

火车站 11(港口)和 nn(首都)是公司管辖范围内最繁忙的车站。为了保障进口货物安全,根据交通运输部的要求,小 I 需要在一些铁路上设立检查站,使得从火车站 11 到火车站 nn 的所有可能路线上都有一个有检查站的铁路。

小 I 可以通知一些分部(也可以不通知任何分部),要求这些分部在它们管理的所有铁路上设立检查站。小 I 想知道,最少需要通知多少个分部才可以达到要求。作为新上任的算法工程师,你准备给小 I 露一手。

输入格式

输入的第一行三个整数 n,m,c(2n,m,c5×104)n,m,c (2 \le n, m, c \le 5\times 10^4),分别表示火车站数量、铁路数量和分部数量。

接下来一行 cc 个整数 p1,p2,,pc(1pin)p_1, p_2, \cdots, p_c (1 \le p_i \le n),描述每个分部所在的火车站编号。

接下来 mm 行每行三个整数 $u_i, v_i, r_i (1 \le u_i, v_i \le n, 1 \le r_i \le c)$,描述一条铁路。保证 pri=uip_{r_i} = u_ipri=vip_{r_i} = v_i

输出格式

输出一行一个整数表示最少需要通知的分部数量。

5 10 3
3 1 4
1 3 1
4 3 1
3 2 1
3 5 1
1 2 2
2 1 2
1 4 2
5 1 2
1 4 3
4 5 3
2

提示

样例解释

该样例的铁路组织如下图所示,其中红色、绿色和黑色分别为 1、2、3 分部管辖的铁路。最优策略是通知分部 1 和 3。

题目来源

题目来自 THUPC2025(2025年清华大学学生程序设计竞赛暨高校邀请赛)初赛,信息来源于 THUSAAC 仓库