vitally!
题目:https://www.patest.cn/contests/pat-a-practise/1013
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
int v[1005][1005];
bool visit[1005];
int N;
void dfs(int node) {
visit[node] = true; //dfs就是为了记录走过的城市,之前建立二维数组的方法远没有这个好
for(int i=1;i<=N;i++) { //因为是强联通分量,i j和j i存的是一样的
if(visit[i]==false&&v[node][i]==1)
dfs(i);
}
}
int main() {
int M,K;
scanf("%d%d%d",&N,&M,&K);
int a,b,x;
for(int i=0;i<M;i++){
scanf("%d%d",&a,&b);
v[a][b]=v[b][a]=1;
}
for(int i=0;i<K;i++){
scanf("%d",&x);
fill(visit,visit+1005,false);
int cnt=0;
visit[x]=true;
for(int j=1;j<=N;j++){ //细节,城市是要从1开始的
if(visit[j]==false){
dfs(j);
cnt++;
}
}
printf("%d\n", cnt - 1);
}
return 0;
}