一道图论水题
考虑dfs?
还有并查集方法?
#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
vector<int> v[N];
bool vis[N];
void dfs(int x,int t){
if(vis[x]||x==t){
return;
}
vis[x]=1;
for(int i=0;i<v[x].size();i++){
dfs(v[x][i],t);
}
}
int main(){
int n,m,a,b,k,t,ans=0;
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<m;i++){
scanf("%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
for(int i=0;i<k;i++){
ans=0;
memset(vis,0,sizeof(vis));
scanf("%d",&t);
for(int j=1;j<=n;j++){
if(j==t){
continue;
}
if(!vis[j]){
dfs(j,t);
ans++;
}
}
printf("%d\n",ans-1);
}
return 0;
}