Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- int i, j, n, tall, head, cur, u, s, m, x, y, v, d[5000], queue [5000];
- bool a[5000][5000], used[5000];
- void push (int s)
- {
- queue[head]=s;
- head++;
- }
- int pop()
- {
- tall++;
- return queue[tall - 1];
- }
- int main()
- {
- freopen("maxmin.in", "r", stdin);
- freopen("maxmin.out", "w", stdout);
- scanf("%d%d%d\n", &n, &m, &s);
- s--;
- for ( i = 0; i < n; i++)
- for ( j = 0; j < n; j++)
- a[i][j] = false;
- for (i = 0; i < m; i++)
- {
- scanf("%d%d", &x, &y);
- a[y - 1][x - 1] = true;
- }
- for ( i = 0; i < n; i++)
- used[i]= false;
- used[s] = true;
- d[s] = 0;
- push(s);
- while (tall < head)
- {
- cur = pop();
- for (u = 0; u < n; u++)
- {
- if ((a[cur][u] == true) && !used[u])
- {
- push(u);
- used[u] = true;
- d[u] = d[cur] + 1;
- }
- }
- }
- v = d[s];
- for ( i = 0; i < n; i++)
- if (d[i] > v)
- v = d[i];
- printf("%d", v);
- return 0;
- }
Add Comment
Please, Sign In to add comment