Pagini recente » Cod sursa (job #341349) | Cod sursa (job #1290384) | Cod sursa (job #1350270) | Cod sursa (job #683797) | Cod sursa (job #935374)
Cod sursa(job #935374)
#include <stdio.h>
#define MAX 100010
struct nod {
int info;
nod *next;
};
nod *g[MAX];
int n,m,s;
int rez[MAX],c[MAX],nr;
void Add(int i,int j)
{
nod *q = new nod;
q->info = j;
q->next = g[i];
g[i] = q;
}
void Read()
{
int x, y;
freopen("bfs.in","r",stdin);
scanf("%d %d %d",&n,&m,&s);
for (int i = 0;i < m; i++)
{
scanf("%d %d",&x,&y);
Add(x,y);
}
}
void BFS()
{
int i;
for (i = 0;i <= n; i++ )
rez[i] = -1;
c[nr++] = s;
rez[s]=0;
for (i = 0; i < nr; i++)
{
for (nod *j = g[c[i]]; j ; j = j->next)
if (rez[j->info] == -1)
{
rez[j->info] = rez[c[i]] + 1;
c[nr++] = j->info;
}
}
}
void Write()
{
freopen("bfs.out","w",stdout);
for (int i = 1; i <= n; i++)
printf("%d ",rez[i]);
}
int main ()
{
Read();
BFS();
Write();
return 0;
}