Pagini recente » Cod sursa (job #2448887) | Cod sursa (job #75235) | Cod sursa (job #2887573) | Cod sursa (job #368530) | Cod sursa (job #268039)
Cod sursa(job #268039)
#include <stdio.h>
#include <string.h>
struct lista
{
long nod;
struct lista *urm;
};
lista *g[100001];
long n,m,t[100001],d[100001],c[100001],timp;
char u[100001];
void adauga(long i,long j)
{
lista *p;
p=new lista;
p->nod=j;
p->urm=g[i];
g[i]=p;
}
void bf(int start)
{
lista *p;
int nod,st,dr;
memset(u,0,sizeof(u));
st=dr=1;
c[st]=start;
u[start]=1;
for(d[start]=0; st<=dr; st++)
{
nod=c[st];
for(p=g[nod]; p!=NULL;p=p->urm)
if(!u[p->nod])
{
u[c[++dr]=p->nod]=1;
d[p->nod]=d[nod]+1;
t[p->nod]=nod;
}
}
}
int main()
{
long i,j,k,s;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%ld %ld %ld",&n,&m,&s); k=m;
for(; k>0; k--)
{
scanf("%ld %ld",&i,&j);
adauga(i,j);
adauga(j,i);
}
bf(s);
for(i=1; i<=n; i++)
{
if(s!=i && !d[i]) printf("-1 ");
else printf("%ld ",d[i]);
}
return 0;
}