暴力60pts求助qwq
查看原帖
暴力60pts求助qwq
561621
NoMoreLove楼主2024/5/25 22:01
#include <bits/stdc++.h>
using namespace std;
int n,m,f[155];
struct node{
	int u,v;
}a[5005];
int find(int x){
	if(f[x]==x) return x;
	return f[x]=find(f[x]);
}
void merge(int u,int v){
	int fu=find(u),fv=find(v);
	f[fv]=fu;
}
bool cmp(node a,node b){
	return a.u<b.u||a.u==a.u&&a.v<b.v;
}
bool check(){
	int sum=0;
	for(int i=1;i<=n;i++)
		if(f[i]==i) sum++;
	return sum>1;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>a[i].u>>a[i].v;
		if(a[i].u>a[i].v) swap(a[i].u,a[i].v);
	}
	sort(a+1,a+1+m,cmp);
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++) f[j]=j;
		for(int j=1;j<=m;j++)
			if(i!=j) merge(a[j].u,a[j].v);
		if(check()) cout<<a[i].u<<" "<<a[i].v<<"\n";
	}
	return 0;
}
2024/5/25 22:01
加载中...