部分AC求调QWQ
查看原帖
部分AC求调QWQ
919041
xuman楼主2025/7/23 08:55
#include<bits/stdc++.h>
#define int long long
using namespace std;

map<string,int> yj;
pair<int,int> yq[100010];
pair<int,int> fk[100010];
int fzf[100010];

int find(int x){
	if(x==fzf[x])return x;
	return fzf[x]=find(fzf[x]);
}

signed main(){
	int x,y,g,cnt=0,dyx=0;
	cin>>x;
	for(int i=1;i<=x;i++){
		string a,b;
		cin>>a>>b;
		if(!yj[a]){
			cnt++;
			yj[a]=cnt;
		}
		if(!yj[b]){
			cnt++;
			yj[b]=cnt;
		}
		yq[i].first=yj[a];
		yq[i].second=yj[b];
	}
	cin>>y;
	for(int i=1;i<=y;i++){
		string a,b;
		cin>>a>>b;
		if(!yj[a]){
			cnt++;
			yj[a]=cnt;
		}
		if(!yj[b]){
			cnt++;
			yj[b]=cnt;
		}
		fk[i].first=yj[a];
		fk[i].second=yj[b];
	}
	for(int i=1;i<=cnt;i++){
		fzf[i]=i;
	}
	cin>>g;
	for(int i=1;i<=g;i++){
		string a,b,c;
		cin>>a>>b>>c;
		int aa,bb,cc;
		aa=yj[a];
		bb=yj[b];
		cc=yj[c];
		fzf[aa]=find(fzf[cc]);
		fzf[bb]=find(fzf[cc]);
	}
	for(int i=1;i<=x;i++){
		int a,b;
		a=yq[i].first;
		b=yq[i].second;
		if(find(a)!=find(b)){
			dyx++;
		}
	}
	//cout<<dyx<<"dyx"<<'\n';
	for(int i=1;i<=y;i++){
		int a,b;
		a=fk[i].first;
		b=fk[i].second;
		if(find(a)==find(b)){
			dyx++;
		}
	}
	//cout<<dyx<<"dyx"<<'\n';
	//dyx--;
	cout<<dyx;
	return 0;
}
2025/7/23 08:55
加载中...