本地秒出答案,提交TLE
查看原帖
本地秒出答案,提交TLE
380042
piggy123楼主2021/12/19 09:01
#include <bits/stdc++.h>
#define ll long long
using namespace std;

ll f1[1005],f2[1005];
vector<pair<ll,ll> > fangan;

ll find1(ll a){
	if (f1[a]!=a)f1[a]=find1(f1[a]);
	return f1[a];
}

ll find2(ll a){
	if (f2[a]!=a)f2[a]=find2(f2[a]);
	return f2[a];
}

ll merge(ll a,ll b){
	ll v=find1(a),w=find2(a),x=find1(b),y=find2(b);
	if (v!=x)f1[v]=x;
	if (w!=y)f2[w]=y;
}

int main(){
	ll n,m1,m2,t,f,ans=0;
	cin >> n >> m1>>m2; 
	for (ll i=1;i<=n;i++)f1[i]=f2[i]=i;
	for (ll i=0;i<m1;i++){
		cin >> f >> t;
		f1[find1(f)]=find1(t);
	}
	for (ll i=0;i<m2;i++){
		cin >> f >> t;
		f2[find2(f)]=find2(t);
	} 
	for (ll i=1;i<=n;i++){
		for (ll j=i+1;j<=n;j++){
			if (find1(i)!=find1(j)&&find2(i)!=find2(j)){
				merge(i,j);
				ans++;
				fangan.push_back(pair<ll,ll>(i,j));
			}
		}
	}
	cout << ans << endl;
	for (ll i=0;i<ans;i++)cout << fangan[i].first << " " << fangan[i].second << endl;
	return 0;
}

2021/12/19 09:01
加载中...