Pagini recente » Cod sursa (job #1344091) | Cod sursa (job #1346812) | Cod sursa (job #908147) | Cod sursa (job #3185930) | Cod sursa (job #797289)
Cod sursa(job #797289)
#include <cstdio>
#include <cstring>
using namespace std;
FILE *fin=freopen("bfs.in","r",stdin);
FILE *fout=freopen("bfs.out","w",stdout);
int n,m,s;
struct nod
{
int inf;
nod *urm;
}*a[100005];
void add(nod *&q, int inf)
{
nod *p= new nod;
p->inf=inf;
p->urm=q;
q=p;
}
int u;
int viz[100005];
int c[100005];
void citire()
{
scanf("%d %d %d\n",&n,&m,&s);
int x,y;
for(int i=0;i<m;i++)
{
scanf("%d %d",&x,&y);
add(a[x],y);
}
}
void bfs()
{
int cost = 0;
viz[s]=0;
c[u++]=s;
for(int po=0;po<=u;po++){
cost++;
for(nod *i=a[c[po]];i;i=i->urm)
{
if(viz[i->inf]==-1)
{
c[u++]=i->inf;
viz[i->inf]=1+viz[c[po]];
}
}
}
}
int main()
{
citire();
u=0;
memset(viz,-1,sizeof(viz));
bfs();
for(int i=1;i<=n;i++)
printf("%d ",viz[i]);
printf("\n");
return 0;
}