Sunday, June 7, 2015

UVa 280 - Vertex

// UVa 280 - Vertex

#include <iostream>
#include <string.h>
#include <vector>
using namespace std;

bool visited[101];
int sol;
vector<int> lnk[101];

void dfs(int i) {
	for (int j = 0; j < lnk[i].size(); j++) {
		if (!visited[lnk[i][j]]) {
			visited[lnk[i][j]] = true;
			sol++;
			dfs(lnk[i][j]);
		}
	}
}

int main() {
	int n;
	cin >> n;

	while (n) {
		for (int i = 1; i <= n; i++)
			lnk[i].clear();
		int m;
		cin >> m;
		while (m) {
			int a;
			cin >> a;
			while (a) {
				lnk[m].push_back(a);
				cin >> a;
			}
			cin >> m;
		}
		int q;
		for (cin >> q; q; q--) {
			int s;
			cin >> s;
			memset(visited, false, sizeof(visited));
			sol = 0;
			dfs(s);
			cout << n - sol;
			for (int i = 1; i <= n; i++)
				if (!visited[i])
					cout << " " << i;
			cout << endl;
		}

		cin >> n;
	}
	return 0;
}

No comments:

Post a Comment