Pagini recente » Cod sursa (job #885311) | Cod sursa (job #1578756) | Cod sursa (job #67406) | Cod sursa (job #1396698) | Cod sursa (job #228672)
Cod sursa(job #228672)
#include <cstdio>
#include <queue>
#include <vector>
#define N 100010
using namespace std;
int n,m,i,x,y,nod,nr,rez[N];
vector<int> L[N];
vector<int>::iterator it;
queue<int> C;
void bfs(int nod)
{
char E[N];
E[nod]=1;
for (C.push(nod); !C.empty(); C.pop())
for (it=L[C.front()].begin(); it!=L[C.front()].end(); it++)
if (!E[*it])
{
E[*it]=1;
rez[*it]=1+rez[C.front()];
C.push(*it);
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d\n",&n,&m,&nod);
for (i=1; i<=m; i++)
{
scanf("%d %d\n",&x,&y);
L[x].push_back(y);
}
bfs(nod);
for (i=1; i<nod; i++)
if (rez[i]) printf("%d ",rez[i]);
else printf("-1 ");
printf("0 ");
for (i=nod+1; i<=n; i++)
if (rez[i]) printf("%d ",rez[i]);
else printf("-1 ");
return 0;
}