首页 > 其他分享 >P1656 炸铁路

P1656 炸铁路

时间:2022-10-31 18:48:41浏览次数:38  
标签:return int d% P1656 铁路 Edge find

感觉可以用tarjan,但奈何弱小的我并没有学过QAQ;

这题的坑就在排序上面

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 7;
struct Edge{
int u, v;
}a[N];
int f[N];
bool cmp(Edge x, Edge y) {return x.u == y.u ? x.v < y.v : x.u < y.u;}
int find (int x) {return f[x] == x ? x : f[x] = find (f[x]);}
int main(){
int n, m;
scanf("%d%d", &n, &m);
for(int i = 1;i <= m;i ++){
scanf("%d%d", &a[i].u, &a[i].v);
if(a[i].u > a[i].v) swap(a[i].u, a[i].v);
}
sort(a + 1, a + m + 1, cmp);
for(int i = 1;i <= m;i ++){
// printf("i == %d %d\n", a[i].u, a[i].v);
for(int j = 1;j <= n;j ++) f[j] = j;
int p = n;
for(int j = 1;j <= m;j ++){
if(j == i) continue;
int u = find (a[j].u), v = find(a[j].v);
if(u != v){
f[u] = v;
p -= 1;
}
}
if(p != 1) printf("%d %d\n", a[i].u, a[i].v);
}
return 0;
}

标签:return,int,d%,P1656,铁路,Edge,find
From: https://www.cnblogs.com/loser--QAQ/p/16845312.html

相关文章