#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的地方!!!
也就是,正常来说只能跑一次的输入边!!!
现在让我疯狂输入啦!!!!!!!!!!!