Pagini recente » Cod sursa (job #2801149) | Cod sursa (job #2754942) | Cod sursa (job #2944318) | Cod sursa (job #442668) | Cod sursa (job #991563)
Cod sursa(job #991563)
#include<cstdio>
#include<fstream>
using namespace std;
int n,m,s;
int c[100001];
int viz[100001];
struct art
{
int x;
art *urm;
};
art *L[100001];
void citire()
{
int i,a,b;
art *p;
scanf("%d%d%d",&n,&m,&s);
for (i=1;i<=m;++i)
{
scanf("%d%d",&a,&b);
p=new art;
p->x=b;
p->urm=L[a];
L[a]=p;
}
}
int main()
{
int i;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
art *p;
int li=1,ls=1;
c[li]=s;
viz[s]=1;
while (li<=ls)
{
p=L[c[li]];
while (p!=NULL)
{
int r=p->x;
if (viz[r]==0)
{
++ls;
c[ls]=r;
viz[c[ls]]=viz[c[li]]+1;
}
p=p->urm;
}
++li;
}
--viz[s];
for (i=1;i<=n;++i)
if (viz[i]==0)
if (i!=s) printf("-1 ");
else printf("0 ");
else printf("%d ",viz[i]-1);
return 0;
}