// UVa 10243 - Fire! Fire!! Fire!!! #include <iostream> #include <string.h> using namespace std; bool yet[1001], black[1001]; int degree[1001]; int lnk[1001][1001]; void dfs(int i) { yet[i] = false; for (int j = 0; j < degree[i]; j++) { int child = lnk[i][j]; if (yet[child]) { dfs(child); if (!black[child]) black[i] = true; } } } int main() { int n; cin >> n; while (n) { for (int i = 1; i <= n; i++) { cin >> degree[i]; for (int j = 0; j < degree[i]; j++) cin >> lnk[i][j]; } if (n != 1) { memset(yet, true, sizeof(yet)); memset(black, false, sizeof(black)); dfs(1); int sol = 0; for (int i = 1; i <= n; i++) if (black[i]) sol++; cout << sol << endl; } else cout << 1 << endl; cin >> n; } return 0; }
Wednesday, June 24, 2015
UVa 10243 - Fire! Fire!! Fire!!!
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment