Pagini recente » Cod sursa (job #1447781) | Cod sursa (job #204653) | Cod sursa (job #1791023) | Cod sursa (job #2590578) | Cod sursa (job #794188)
Cod sursa(job #794188)
#include<cstdio>
#include<vector>
using namespace std;
#define NMAX 100002
#define pb push_back
vector <int> a[NMAX];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n,m ,x, y,s,*g,*c;
int viz[NMAX]={0};
scanf("%d %d %d",&n,&m,&s);
g=new int[n+2];
c=new int[n+2];
c[1]=s;
viz[s]=1;
for(int i=1;i<=m;++i)
{
scanf("%d %d",&x,&y);
a[x].pb(y);
}
for(int i=1;i<=n;++i)
g[i]=a[i].size();
int l=1;
for(int i=1;i<=l;++i)
{
x=c[i];
for(int j=0;j<g[x];++j)
{
y=a[x][j];
if(viz[y]==0)
{
c[++l]=y;
viz[y]=viz[x]+1;
}
}
}
for(int i=1;i<=n;++i)
if(viz[i]>0)printf("%d ",viz[i]-1);
else printf("-1 ");
return 0;
}