Pagini recente » Cod sursa (job #388176) | Cod sursa (job #979415) | Cod sursa (job #1695424) | Cod sursa (job #2835541) | Cod sursa (job #2096558)
#include <cstdio>
#include <vector>
using namespace std;
vector <int> a[100000];
vector <int>::iterator it;
int n,m,i,j,nod,b[100001],c[100001];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d\n",&n,&m,&nod);
while(m)
{
scanf("%d %d\n",&i,&j);
if(i!=j)
a[i].push_back(j);
m--;
}
for(i=1;i<=n;i++)
c[i]=100001;
m=i=1;
b[1]=nod;
c[nod]=0;
while(i<=m)
{
for(it=a[b[i]].begin();it!=a[b[i]].end();it++)
{
j=*it;
if(c[b[i]]+1<c[j])
{
c[j]=c[b[i]]+1;
b[++m]=j;
}
}
i++;
}
for(i=1;i<=n;i++)
if(c[i]==100001)
printf("-1 ");
else
printf("%d ",c[i]);
printf("\n");
return 0;
}