Pagini recente » Cod sursa (job #2022758) | Cod sursa (job #1633991) | Cod sursa (job #3281318) | Cod sursa (job #1489178) | Cod sursa (job #773020)
Cod sursa(job #773020)
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
#define nr 100010
vector <int> a[nr];
int c[nr],s[nr],g[nr];
int start,n,m;
void BFS(int nod)
{
int i,j,l;
for (i=1; i<=n; i++) c[i]=-1;
l=1;
c[nod]=0;
s[l]=nod;
for (i = 1; i <= l; i++)
for (j = 0; j < g[s[i]]; j++)
if (c[a[s[i]][j]] == -1)
{
s[++l] = a[s[i]][j];
c[s[l]] = c[s[i]] + 1;
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int i,x,y;
scanf("%i%i%i",&n,&m,&start);
for (i=1; i<=m; i++)
{
scanf("%i%i",&x,&y);
a[x].push_back(y);
}
for (i=1; i<=n; i++) g[i]=a[i].size();
BFS(start);
for (i=1; i<=n; i++) printf("%i ",c[i]);
return 0;
}