[POI2007] ATR-Tourist Attractions
题目背景
[English Edition](/paste/gu4ksinh)
题目描述
给出一张有 $n$ 个点 $m$ 条边的无向图,每条边有边权。
你需要找一条从 $1$ 到 $n$ 的最短路径,并且这条路径在满足给出的 $g$ 个限制的情况下可以在所有编号从 $2$ 到 $k+1$ 的点上停留过。
每个限制条件形如 $r_i, s_i$,表示停留在 $s_i$ 之前必须先在 $r_i$ 停留过。
**注意,这里的停留不是指经过**。
输入输出格式
输入格式
第一行三个整数 $n,m,k$。
之后 $m$ 行,每行三个整数 $p_i, q_i, l_i$,表示在 $p_i$ 和 $q_i$ 之间有一条权为 $l_i$ 的边。
之后一行一个整数 $g$。
之后 $g$ 行,每行两个整数 $r_i, s_i$,表示一个限制条件。
输出格式
输出一行一个整数,表示最短路径的长度。
输入输出样例
输入样例 #1
8 15 4
1 2 3
1 3 4
1 4 4
1 6 2
1 7 3
2 3 6
2 4 2
2 5 2
3 4 3
3 6 3
3 8 6
4 5 2
4 8 6
5 7 4
5 8 6
3
2 3
3 4
3 5
输出样例 #1
19
说明
对于 $100\%$ 的数据, 满足:
- $2\le n\le2\times10^4$
- $1\le m\le2\times10^5$
- $0\le k\le\min(20, n-2)$
- $1\le p_i<q_i\le n$
- $1\le l_i\le 10^3$
- $r_i, s_i \in [2,k+1], r_i\not=s_i$
- 保证不存在重边且一定有解。