1013. Battle Over Cities (25)

来源:互联网 发布:怎样在电脑链接网络 编辑:程序博客网 时间:2024/05/17 18:03
#include <iostream>#include <list>#include <cstring>#include <cstdio>using namespace std;#define N 1001int visit(list<int> adj[], int mark[], int n, int lost) {int count = 0;for(int v = 1; v <= n; v ++) {if(v == lost || mark[v])continue;list<int> bfsq;bfsq.push_back(v);count ++;mark[v] = 1;while(bfsq.size()) {int c = bfsq.front();bfsq.pop_front();for(list<int>::iterator ait = adj[c].begin(); ait != adj[c].end(); ait ++) {int a = *ait;if(a == lost || mark[a])continue;bfsq.push_back(a);mark[a] = 1;}}}return count;}int main(int argc, char **argv) {list<int> adj[N];int n, m, k, lost;int mark[N] = {0};//cin >> n >> m >> k;scanf("%d%d%d", &n, &m, &k);for(int i = 0; i < m; i ++) {int c1, c2;//cin >> c1 >> c2;scanf("%d%d", &c1, &c2);adj[c1].push_back(c2);adj[c2].push_back(c1);}for(int i = 0; i < k; i ++) {//cin >> lost;scanf("%d", &lost);memset(mark, 0, sizeof(mark));int count = visit(adj, mark, n, lost);cout << count-1 << endl;}return 0;}

0 0
原创粉丝点击