Pagini recente » Cod sursa (job #2356175) | Cod sursa (job #1782128) | Cod sursa (job #1447944) | Cod sursa (job #1149161) | Cod sursa (job #1554861)
#include <cstdio>
#define MAX 100000
#define mu 1000000
using namespace std;
struct nodul{
int val;
nodul *next;
};
nodul *v[MAX+1];
int viz[MAX+1];
void adauga(int nod, int vecin)
{
nodul *aux;
aux=new nodul;
aux->val=vecin;
aux->next=v[nod];
v[nod]=aux;
}
int coada[mu+1];
void bfs(int nod)
{
int ic=1, sf=1;
nodul *aux;
coada[1]=nod;
viz[nod]=1;
aux=v[nod];
while(ic<=sf)
{
aux=v[coada[ic]];
while(aux!=NULL)
{
if(viz[aux->val]==0)
{
viz[aux->val]=viz[coada[ic]]+1;
coada[++sf]=aux->val;
}
aux=aux->next;
}
ic++;
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int n, m, i, x, y, s;
scanf("%d%d%d", &n, &m, &s);
for(i=1;i<=m;i++)
{
scanf("%d%d", &x, &y);
adauga(x, y);
}
bfs(s);
for(i=1;i<=n;i++)
{
if(viz[i]==0&&i!=s)
printf("-1 ");
else{
if(i==s)
printf("0 ");
else printf("%d ", viz[i]-1);
}
}
return 0;
}