giabinh

924_SpeadingTheNews

Sep 20th, 2015
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. bool solve;
  6. int step[2502], trace[2502], a[2502][2502], E;
  7.  
  8. void BFS(int s) {
  9.     memset(step, 0, sizeof(step));
  10.     memset(trace, 0, sizeof(trace));
  11.     solve = 0;
  12.  
  13.     queue <int> q;
  14.     q.push(s);
  15.     step[s] = trace[s] = 1;
  16.  
  17.     while (!q.empty())
  18.     {
  19.         int u = q.front();
  20.         q.pop();
  21.  
  22.         for (int v=0; v<E; ++v)
  23.             if (!trace[v] && a[u][v])
  24.             {
  25.                 solve = 1;
  26.                 trace[v] = trace[u] + 1;
  27.                 step[trace[v]]++;
  28.                 q.push(v);
  29.             }
  30.     }
  31. }
  32.  
  33. int main() {
  34.     #ifndef ONLINE_JUDGE
  35.         freopen("uva924.inp", "r", stdin);
  36.     #endif // ONLINE_JUDGE
  37.  
  38.     while (scanf("%d", &E) != EOF)
  39.     {
  40.         memset(a, false, sizeof(a));
  41.  
  42.         for (int i=0; i<E; ++i)
  43.         {
  44.             int tmp; scanf("%d", &tmp);
  45.             for (int j=0; j<tmp; ++j)
  46.             {
  47.                 int x; scanf("%d", &x);
  48.                 a[i][x] = true;
  49.             }
  50.         }
  51.  
  52.         int test; scanf("%d", &test);
  53.         while (test--)
  54.         {
  55.             int s; scanf("%d", &s);
  56.             BFS(s);
  57.  
  58.             int day = 1;
  59.             int boom = step[1];
  60.             for (int i=1; i<E; i++)
  61.                 if (step[i] > boom)
  62.                 {
  63.                     boom = step[i];
  64.                     day = i;
  65.                 }
  66.  
  67.             if (solve) printf("%d %d\n", boom, day-1); else printf("0\n");
  68.         }
  69.     }
  70.  
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment