C++特性
查看原帖
C++特性
524801
不食嗟来之食楼主2022/10/28 21:10
#include<iostream>
#include<cstdio>
using namespace std;
const int N=3e3+5;
int u[N],v[N];
int n,m,fa[N];
void init(){
	for(int i=1;i<=n;i++) fa[i]=i;
}
int finds(int x){
	if(fa[x]==x)return x;
	else  fa[x]=finds(fa[x]);
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		scanf("%d%d",&u[i],&v[i]);
	}
	for(int i=1;i<=n;i++){
		int x;
		scanf("%d",&x);
		init();
		for(int j=1;j<=m;j++){
			if(u[j]==x||v[j]==x) continue;
			int uu=finds(u[j]);
			int vv=finds(v[j]);
			if(uu==vv) continue;
			fa[uu]=vv;
		}
		int k=finds(fa[1]);
		cout<<"!!"<<endl;
		for(int j=2;j<=n;j++){
			if(finds(fa[j])!=k){
				printf("NO\n");
				break;
			}
			if(j==n){
				printf("YES\n");
				break;
			}
		}
	}
	return 0;
}

rt,虽然并查集写错了,第二个else 加一个return就好了,但是!!!!

4 3
1 2
2 3
3 4
3
4
1
2

这组数据,跑完3之后!!!

会!!!

跳!!!

到!!!

输入m的地方!!!

也就是,正常来说只能跑一次的输入边!!!

现在让我疯狂输入啦!!!!!!!!!!!

好好玩

2022/10/28 21:10
加载中...