样例输出错误求助.阿巴啊巴
查看原帖
样例输出错误求助.阿巴啊巴
295602
奈因楼主2020/9/26 22:11
#include <bits/stdc++.h>
using namespace std;
int n,m;
int a[10000000];
int f[10000000];
bool ans[10000000];
int head[10000000],next[10000000];
bool v[1000000];
int find(int x)
{
	if(f[x]!=x)f[x]=find(f[x]);
	return f[x];
}
struct edge{
	int x;
	int y;
};
int id=0; 
void add(int x,int y)
{
	id++;
	next[id]=head[x];
	head[x]=id;
}
edge e[1000000];
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>e[i].x>>e[i].y;
		add(e[i].x,e[i].y);
		add(e[i].y,e[i].x);
	}
	for(int i=1;i<=n;i++)
	{
		f[i]=i;
		cin>>a[i];
	}
	int cnt=0;
	for(int i=n;i>=1;i--)
	{
		int x=f[i];
		v[x]=1;
		cnt++;
        for(int j=head[x];j;j=next[j])
		{
			int p=e[j].y;
			if(!v[p])continue;
			int rx=find(x);
			int ry=find(p);
			if(rx!=ry)
			{
				f[rx]=ry;
				cnt--;
			}
		}
		if(cnt==1)ans[i]=1;
		else ans[i]=0;
	}
	for(int i=1;i<=n;i++)
	{
		if(ans[i])cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}
2020/9/26 22:11
加载中...