PAT 1013. Battle Over Cities (25)

来源:互联网 发布:中万网络待遇 编辑:程序博客网 时间:2024/06/05 12:40
//1013. Battle Over Cities (25)//这道题主要思路是,删除了某个城市节点后,剩下的城市可以分作几部分(假设N部分),则需要组成的路线是N-1就可以将所有城市相连。//采用dfs将所有顶点遍历,判断可以分为的组即可。//acc#include<iostream>using namespace std;bool Road[1005][1005] = {false};bool IsReached[1005] = {false};int N, M, K;int t;//int flag = true;void dfs( int curr) {int i;for(i = 1;i<=N;i++){if(IsReached[i] == false && i != curr && Road[i][curr] == true && i!= t){IsReached[i] = true;dfs(i);}}}int main(){cin >> N >> M >> K;int t1, t2;int i;for(i=0;i<M;i++){cin >> t1 >> t2;Road[t1][t2] = true;Road[t2][t1] = true;}int count = 0;int j;for(i=0;i<K;i++){cin >> t;count = 0;fill(IsReached, IsReached+ 1005, false);for( j= 1 ;j<=N;j++){//dfs(i);if(j == t)continue;if( IsReached[j] == false){dfs(j);count++;}}if(count <= 1)cout << "0" << endl;elsecout << count-1 << endl;}return 0;}

0 0
原创粉丝点击