Pagini recente » Cod sursa (job #1828887) | Cod sursa (job #1053395) | Cod sursa (job #1875788) | Cod sursa (job #438796) | Cod sursa (job #2666958)
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
#define MAXN 100010
using namespace std;
int n,m,s;
vector<int> A[MAXN];
int cost[MAXN];
queue <int> coada;
void bfs(int nod)
{
memset(cost, -1, sizeof(cost));
coada.push(nod);
cost[nod] = 0;
while(!coada.empty())
{
int x = coada.front();
coada.pop();
for(auto vecin : A[x])
{
if(cost[vecin] == -1)
{
coada.push(vecin);
cost[vecin] = cost[x] + 1;
}
}
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int i;
scanf("%d %d %d", &n, &m, &s);
for(i=1;i<=m;i++)
{
int x,y;
scanf("%d %d", &x, &y);
A[x].push_back(y);
}
bfs(s);
for(i=1;i<=n;i++)
printf("%d ", cost[i]);
printf("\n");
return 0;
}