Pagini recente » Cod sursa (job #12170) | Cod sursa (job #3133664) | Cod sursa (job #5250) | Cod sursa (job #896364) | Cod sursa (job #974783)
Cod sursa(job #974783)
#include <stdio.h>
#define Nmax 100002
using namespace std;
int n,m,s;
int viz[Nmax];
struct graf
{
int v;
graf *adr;
};
graf *g[Nmax];
void add(int v1,int v2)
{
graf *p;
p=new graf;
p->v=v2;
p->adr=g[v1];
g[v1]=p;
}
void citire()
{
int i,v1,v2;
scanf("%d %d %d",&n,&m,&s);
for(i=1;i<=m;++i)
{
scanf("%d %d",&v1,&v2);
add(v1,v2);
}
}
void bfs()
{
int cd[Nmax],p,u;
graf *q;
viz[s]=1;
cd[1]=s;
p=1;
u=1;
while(p<=u)
{
for(q=g[cd[p]];q;q=q->adr)
if(viz[q->v]==0)
{
viz[q->v]=viz[cd[p]]+1;
++u;
cd[u]=q->v;
}
++p;
}
}
void scrie()
{
int i;
for(i=1;i<=n;++i)
printf("%d ",viz[i]-1);
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
bfs();
scrie();
fclose(stdin);
fclose(stdout);
return 0;
}