Pagini recente » Cod sursa (job #2354783) | Cod sursa (job #2402355) | Cod sursa (job #1118993) | Cod sursa (job #1748307) | Cod sursa (job #541122)
Cod sursa(job #541122)
#include <iostream>
#include<stdio.h>
using namespace std;
const int LUNG = 100045;
int viz[LUNG], cat[LUNG], c[LUNG],
n,m,start;
typedef struct nod
{
int inf;
nod *adr;
} TNOD;
TNOD *v[LUNG],*p;
void add( int a, int b )
{
p= new TNOD;
p->inf=a;
p->adr=v[b];
v[b]=p;
}
void citire()
{
int i,x,y;
cin>>n>>m>>start;
for( i=1; i<=m; i++ )
{
cin>>x>>y;
add(y,x);
}
}
void bfs()
{
int li,ls,x,size=0,j=0;
li=ls=0;
cat[start] = 0;
c[li++] = start;
viz[start] = 1;
for( ls=0; ls<=li; ls++ )
{
x=c[ls];
for ( TNOD *p=v[x]; p!=0; p=p->adr )
if( !viz[p->inf] )
cat[p->inf] = cat[x]+1,
c[li++] = p->inf,
viz[p->inf] = 1;
}
for(int i=1; i<=n; i++ )
if(!viz[i]) printf("-1 ");
else printf("%d ",cat[i]);
printf("\n");
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
bfs();
fclose(stdin);
fclose(stdout);
return 0;
}