// 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