第一篇题解
题目连接炸铁路 - 洛谷
开始用SPFA试着写了一下,很可惜,失败了,五个测试点全WA;由于校内的考试,连续几天没再打开过,今天再度打开失败的代码,估计只有上帝才能看得懂我写的是啥
言归正传
重新思考了本题
看了看数据似乎不是很大,决定用并查集暴力一下
思路很简单,遍历每一条边,假设当前边已被炸掉,连接其他边,若有两点的祖先不一样,便输出这条边的起点和终点(记得将边排序,且编号小的城市在前边)
上代码
#include<bits/stdc++.h>
using namespace std;
int n,m,f[151];
typedef pair<int,int>p;
p way[5001];
int cmp(p a,p b){
if(a.first==b.first) return a.second<b.second;
return a.first<b.first;
}
int find(int x){
if(f[x]==x)return x;
return f[x]=find(f[x]);
}
void merge(int x,int y){
int x1=find(x),y1=find(y);
f[y1]=x1;
}
in