Pagini recente » Cod sursa (job #2246808) | Cod sursa (job #5547) | Cod sursa (job #2683619) | Cod sursa (job #1895637) | Cod sursa (job #683113)
Cod sursa(job #683113)
#include<cstdio>
#define nmax 100010
using namespace std;
int n,m,s;
struct noduri {int nod; noduri *next;} *lista[nmax];
int v[nmax];
void citire()
{
int i,x,y;
freopen("bfs.in","r",stdin);
scanf("%d%d%d",&n,&m,&s );
for(i=1;i<=n;++i)
v[i]=-1;
for(i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
noduri *q;
q=new noduri;
q->nod=y;
q->next=lista[x];
lista[x]=q;
}
}
void bfs(int s)
{
int i,coada[nmax];
int p,u,ic,sf;
v[s]=0;
ic=sf=0;
coada[ic]=s;
noduri *q;
while(ic<=sf)
{
q=lista[coada[ic]];
while(q)
{
if(v[q->nod]==-1)
sf++, coada[sf]=q->nod, v[q->nod]=v[coada[ic]]+1;
q=q->next;
}
ic++;
}
}
void afisare()
{
freopen("bfs.out","w",stdout);
int i;
for(i=1;i<=n;++i)
printf("%d ", v[i]);
}
int main()
{
citire();
bfs(s);
afisare();
}