Pagini recente » Cod sursa (job #622498) | Cod sursa (job #2305338) | Cod sursa (job #688851) | Cod sursa (job #1126904) | Cod sursa (job #229365)
Cod sursa(job #229365)
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
#define MAXN 100005
int N, M, S;
int dist[MAXN];
queue<int> Q;
vector<int> con[MAXN];
int main()
{
freopen("bfs.in", "rt", stdin);
freopen("bfs.out", "wt", stdout);
scanf("%d %d %d", &N, &M, &S);
for (; M; M--)
{
int x, y;
scanf("%d %d", &x, &y);
con[x].push_back(y);
}
memset(dist, -1, sizeof(dist));
Q.push(S); dist[S] = 0;
for (; !Q.empty(); Q.pop())
{
vector<int> :: iterator it;
for (it = con[Q.front()].begin(); it != con[Q.front()].end(); it++)
{
if (dist[*it] != -1)
continue;
dist[*it] = dist[Q.front()] + 1;
Q.push(*it);
}
}
for (int i = 1; i <= N; i++)
printf("%d ", dist[i]);
printf("\n");
return 0;
}