Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- bool solve;
- int step[2502], trace[2502], a[2502][2502], E;
- void BFS(int s) {
- memset(step, 0, sizeof(step));
- memset(trace, 0, sizeof(trace));
- solve = 0;
- queue <int> q;
- q.push(s);
- step[s] = trace[s] = 1;
- while (!q.empty())
- {
- int u = q.front();
- q.pop();
- for (int v=0; v<E; ++v)
- if (!trace[v] && a[u][v])
- {
- solve = 1;
- trace[v] = trace[u] + 1;
- step[trace[v]]++;
- q.push(v);
- }
- }
- }
- int main() {
- #ifndef ONLINE_JUDGE
- freopen("uva924.inp", "r", stdin);
- #endif // ONLINE_JUDGE
- while (scanf("%d", &E) != EOF)
- {
- memset(a, false, sizeof(a));
- for (int i=0; i<E; ++i)
- {
- int tmp; scanf("%d", &tmp);
- for (int j=0; j<tmp; ++j)
- {
- int x; scanf("%d", &x);
- a[i][x] = true;
- }
- }
- int test; scanf("%d", &test);
- while (test--)
- {
- int s; scanf("%d", &s);
- BFS(s);
- int day = 1;
- int boom = step[1];
- for (int i=1; i<E; i++)
- if (step[i] > boom)
- {
- boom = step[i];
- day = i;
- }
- if (solve) printf("%d %d\n", boom, day-1); else printf("0\n");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment