题目:PAT A 1013
题目大意
给出N个城市,M条边连通的图。有K次询问,每次询问,去掉一个点,则连通全部点需要几条边
解题思路
- 连通分量的个数。对每个点,去掉以后,查看还有多少个联通分量,答案为连通分量个数-1
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int n,m,k;
vector<int>mp[maxn];
bool vis[maxn];
void dfs(int s){
vis[s]=1;
for(int t:mp[s]){
if(!vis[t]){
dfs(t);
}
}
}
int main(){
scanf("%d%d%d",&n,&m,&k);
int a,b;
for(int i=1;i<=m;++i){
scanf("%d%d",&a,&b);
mp[a].push_back(b);
mp[b].push_back(a);
}
for(int i=0;i<k;++i){
scanf("%d",&a);
memset(vis,0,sizeof(vis));
int ans=0;
vis[a]=1;
for(int j=1;j<=n;++j){
if(!vis[j]){
dfs(j);
ans++;
}
}
printf("%d\n",ans-1);
}
system("pause");
return 0;
}