#include<stdio.h>
#include<vector>
#include<string.h>
#define MAX_N 1111
using namespace std;
vector<int> G[MAX_N];
bool visited[MAX_N];
int deletePoint;
int n,m,k;
void dfs(int v){
if(v==deletePoint) return;
visited[v]=true;
for(int i=0;i<G[v].size();i++){
if(!visited[G[v][i]]){
dfs(G[v][i]);
}
}
}
int main(){
int a,b;
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<m;i++){
scanf("%d%d",&a,&b);
G[a].push_back(b);
G[b].push_back(a);
}
for(int i=0;i<k;i++){
scanf("%d",&deletePoint);
for(int i=0;i<MAX_N;i++){
visited[i]=false;
}
int block=0;
for(int i=1;i<=n;i++){
if(i!=deletePoint&&!visited[i]){
dfs(i);
block++;
}
}
printf("%d\n",block-1);
}
}
1013. Battle Over Cities (25) PAT甲级
最新推荐文章于 2024-01-15 14:10:15 发布
本文介绍了一个使用深度优先搜索(DFS)算法来分析图在删除特定顶点后的连通性的程序。通过输入节点数量、边的数量以及一系列要删除的顶点,程序能够计算并输出删除每个顶点后图中形成的连通块数量。
359

被折叠的 条评论
为什么被折叠?



