Guest User

Untitled

a guest
Jun 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include <cstdio>
  2.  
  3. int  i, j, n, tall, head, cur, u, s, m, x, y, v, d[5000], queue [5000];
  4. bool  a[5000][5000], used[5000];
  5.  
  6. void push (int s)
  7. {
  8.   queue[head]=s;
  9.   head++;
  10. }
  11. int pop()
  12. {
  13.   tall++;
  14.   return queue[tall - 1];
  15. }
  16. int main()
  17. {
  18.   freopen("maxmin.in", "r", stdin);
  19.   freopen("maxmin.out", "w", stdout);
  20.   scanf("%d%d%d\n", &n, &m, &s);
  21.   s--;
  22.   for ( i = 0; i < n; i++)
  23.     for ( j = 0; j < n; j++)
  24.       a[i][j] = false;
  25.   for (i = 0; i < m; i++)
  26.   {
  27.     scanf("%d%d", &x, &y);
  28.     a[y - 1][x - 1] = true;
  29.   }
  30.   for ( i = 0; i < n; i++)
  31.     used[i]= false;
  32.   used[s] = true;
  33.   d[s] = 0;
  34.   push(s);
  35.   while (tall < head)
  36.   {
  37.     cur = pop();
  38.     for (u = 0; u < n; u++)
  39.     {
  40.       if ((a[cur][u] == true) &&  !used[u])
  41.       {
  42.         push(u);
  43.         used[u] = true;
  44.         d[u] = d[cur] + 1;
  45.       }
  46.     }
  47.   }
  48.   v = d[s];
  49.   for ( i = 0; i < n; i++)
  50.     if (d[i] > v)
  51.       v = d[i];
  52.   printf("%d", v);
  53.   return 0;
  54. }
Add Comment
Please, Sign In to add comment