P10004
P1004 距离与子图
Description
给出一个 \(n\) 个点,\(m\) 条边的无向简单连通图,你需要回答以下两种询问。
- 给出顶点 \(u,v\),查询 \(u,v\) 的距离(它们最短路的边数)。
- 给出顶点 \(a,b,c\),你需要找到原图的一个边数最少的子图,满足子图中 \(a,b\) 的距离、 \(b,c\) 的距离和 \(a,c\) 的距离相较于原图不发生改变。
Format
Input
第一行输入三个正整数 \(n,m,q\)。
接下来 \(m\) 行每行输入两个正整数 \(x,y\) 表示 \(x\) 到 \(y\) 有一条边。
接下来 \(q\) 行,每行每行第一个整数 \(op\) 表示操作类型,若:
- \(op=1\),接下来输入两个正整数 \(u,v\),表示查询这两个顶点之间的距离。
- \(op=2\),接下来输入三个正整数 \(a,b,c\),表示查询上述题意中边数最小的子图边数大小。
本题共有 \(13\) 个测试点,前 \(8\) 测试点每个测试点 \(10\) 分,后 \(5\) 个测试点绑定测试,全部通过可以获得 \(20\) 分。
对于测试点 \(1\),满足 \(q=1\)。
对于测试点 \(1,2,3,4,5\),满足 \(op=1\)。
对于测试点 \(6,7,8\),满足 \(n\le 400\).
对于全部测试点,保证 \(n\le 5000,m\le 5000,q\le 5000,1\le u,v,a,b,c\le n,op\in\{1,2\}\),保证 \(op=2\) 的询问不超过 \(5\) 次。
保证所有操作满足题目描述,保证每一行的两个相邻整数都仅用一个空格隔开。
Output
对于每个询问,输出单独一行表示结果。
Samples
Sample Input 1
16 18 8
1 2
1 3
1 8
2 11
2 4
3 5
3 6
4 5
4 15
5 10
6 7
6 9
6 14
8 9
10 15
10 16
11 12
11 13
1 1 6
1 7 15
1 12 14
1 4 8
2 1 2 3
2 9 11 16
2 6 12 13
2 7 8 15
Sample Output 1
2
5
6
3
2
11
6
10