蓝桥杯-风险度量-并查集
2018-02-13 18:58
176 查看
X星系的的防卫体系包含 n 个空间站。这 n 个空间站间有 m 条通信链路,构成通信网。
两个空间站间可能直接通信,也可能通过其它空间站中转。
对于两个站点x和y (x != y), 如果能找到一个站点z,使得:当z被破坏后,x和y无法通信,则称z为关于x,y的关键站点。显然,对于给定的两个站点,关于它们的关键点的个数越多,通信风险越大。你的任务是:已知网络结构,求两站点之间的通信风险度,即:它们之间的关键点的个数。
输入数据第一行包含2个整数n(2 <= n <= 1000), m(0 <= m <= 2000),分别代表站点数,链路数。空间站的编号从1到n。通信链路用其两端的站点编号表示。
接下来m行,每行两个整数 u,v (1 <= u, v <= n; u != v)代表一条链路。
最后1行,两个数u,v,代表被询问通信风险度的两个站点。
输出:一个整数,如果询问的两点不连通则输出-1.
例如:
用户输入:
7 6
1 3
2 3
3 4
3 5
4 5
5 6
1 6
则程序应该输出:
2
题目核心问题就是若两点原本连通,则枚举所有除询问点的站点,去掉相关的边查看两点是否仍然连通,若不再连通则说明是关键点。
两个空间站间可能直接通信,也可能通过其它空间站中转。
对于两个站点x和y (x != y), 如果能找到一个站点z,使得:当z被破坏后,x和y无法通信,则称z为关于x,y的关键站点。显然,对于给定的两个站点,关于它们的关键点的个数越多,通信风险越大。你的任务是:已知网络结构,求两站点之间的通信风险度,即:它们之间的关键点的个数。
输入数据第一行包含2个整数n(2 <= n <= 1000), m(0 <= m <= 2000),分别代表站点数,链路数。空间站的编号从1到n。通信链路用其两端的站点编号表示。
接下来m行,每行两个整数 u,v (1 <= u, v <= n; u != v)代表一条链路。
最后1行,两个数u,v,代表被询问通信风险度的两个站点。
输出:一个整数,如果询问的两点不连通则输出-1.
例如:
用户输入:
7 6
1 3
2 3
3 4
3 5
4 5
5 6
1 6
则程序应该输出:
2
题目核心问题就是若两点原本连通,则枚举所有除询问点的站点,去掉相关的边查看两点是否仍然连通,若不再连通则说明是关键点。
#include<iostream> using namespace std; int route[2000][2], fa[1000]; //route[]数组记录所有链路信息 int N, M; void init() { for (int i = 1; i <= N; i++) fa[i] = i; } int find(int x) { if (x != fa[x]) { fa[x] = find(fa[x]); } return fa[x]; } void Union(int x, int y) { int fx = find(x), fy = find(y); if (fx != fy) fa[fx] = fy; } int main() { cin >> N >> M; init(); for (int i = 0; i < M; i++) { cin >> route[i][0] >> route[i][1]; Union(route[i][0], route[i][1]); } int a, b, pa, pb; cin >> a >> b; pa = find(a); pb = find(b); if (pa != pb) {//不连通则退出 cout << -1 << endl; } else { int count = 0; for (int i = 1; i <= N; i++) {//枚举所有a,b以外的点 if (i == a || i == b) continue; init(); for (int j = 0; j < M; j++) { if (route[j][0] == i || route[j][1] == i) continue; //去掉与当前枚举点i相关联的链路 Union(route[j][0], route[j][1]); } pa = find(a); pb = find(b); if (pa != pb) count++; //不再连通,则i为关键点,计数加一 } cout << count << endl; } return 0; }
相关文章推荐
- 2017蓝桥杯模拟 风险度量(并查集)
- 2017 蓝桥杯模拟 风险度量
- 【算法笔记】并查集(风险度量&通畅工程)
- 蓝桥杯—风险度量
- 蓝桥杯 风险度量
- 蓝桥杯-2017模拟赛本科试题-风险度量
- 风险度量(广搜,并查集)
- 蓝桥杯 风险度量
- 蓝桥杯2017官方模拟题 风险度量(并查集,暴力)
- 2017蓝桥杯模拟赛 Problem G: 风险度量(40分)
- 危险系数(又名:风险度量)(并查集)
- 蓝桥杯之风险度量
- 蓝桥杯模拟题-风险度量
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 蓝桥杯模拟赛2017 风险度量
- 蓝桥杯 PREV-7 连号区间数(并查集)
- 蓝桥杯 历届试题 合根植物 Java并查集
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 蓝桥杯2017模拟赛-风险度量
- 2017蓝桥杯模拟题 风险度量(暴力枚举)