Pagini recente » Cod sursa (job #1100914) | Cod sursa (job #1684352) | Cod sursa (job #630150) | Cod sursa (job #3212064) | Cod sursa (job #541085)
Cod sursa(job #541085)
#include <iostream>
#include<stdio.h>
using namespace std;
const int LUNG = 100005;
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;
li=ls=0;
cat[start] = 0;
c[li++] = start;
viz[start] = 1;
while( ls<=li )
{
x=c[ls];
size++;
for ( TNOD *p=v[x]; p!=0; p=p->adr )
if( !viz[p->inf] && v[p->inf] )
cat[p->inf] = size,
c[li++] = p->inf,
viz[p->inf] = 1;
ls++;
}
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);
fitire();
bfs();
fclose(stdin);
fclose(stdout);
return 0;
}