#include<iostream>
using namespace std;
int N, M, K;
int road[1000][1000] = { 0 };
int tmp_road[1000][1000] = { 0 };
int vst[1000] = { 0 };
int cnt = 0;
void dfs(int i){
vst[i] = 1;
for (int j = 1; j <= N; j++){
if (tmp_road[i][j] && !vst[j])
dfs(j);
}
}
void dfs_all(){
for (int i = 1; i <= N; i++){
if (!vst[i]){
dfs(i); cnt++;
}
}
}
int main(){
cin >> N >> M >> K;
for (int i = 0; i < M; i++){
int c1, c2;
cin >> c1 >> c2;
road[c1][c2] = road[c2][c1] = 1;
}
while (K--){
for (int i = 1; i <= N; i++){
for (int j = 1; j <= N; j++){
tmp_road[i][j] = road[i][j];
}
}
for (int i = 1; i <= N; i++)
vst[i] = 0;
cnt = 0;
int c; cin >> c;
for (int i = 1; i <= N; i++){//和c相连接的路都要断掉
tmp_road[c][i] = tmp_road[i][c] = 0;
}
dfs_all();
cout << cnt - 2 << endl;
}
}
PAT 1013. Battle Over Cities (25)
最新推荐文章于 2020-06-14 09:15:13 发布