P5836(并查集,普及)求助
  • 板块学术版
  • 楼主sxjsxj
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/9/19 23:01
  • 上次更新2023/11/2 19:02:15
查看原帖
P5836(并查集,普及)求助
1005753
sxjsxj楼主2023/9/19 23:01
#include<iostream>
using namespace std;
char c;
string s,print;
bool cow[100001];
int i,j,n,m,x,y,f[100001];
int find(int x)
{
	if(f[x]!=x)
		f[x]=find(f[x]);
	return f[x];
}
main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
	cin>>n>>m>>s;
	for(i=0;i<n;i++)
		if(s[i]=='H')
			cow[i]=true;
	for(i=1;i<=n;i++) f[i]=i;
	for(i=0;i<m;i++)  print[i]='0'; 
	for(i=1;i<n;i++)
	{
		cin>>x>>y;
		int a=find(x),
			b=find(y);
		if(a!=b)
			f[b]=a;
	}
	for(i=0;i<m;i++)
	{
		cin>>x>>y>>c;
		for(j=1;j<=n;j++)
			if(find(j)==find(x))
				if(c=='H')
				{
					if(cow[j])
						{
							print[i]='1';
							break;
						}
				}
				else
					if(!cow[j])
					{
						print[i]='1';
						break;
					}	
	}
	for(i=0;i<m;i++)
		cout<<print[i];
}
2023/9/19 23:01
加载中...