Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/motociclentziu | Cod sursa (job #2209664) | Cod sursa (job #457918) | Cod sursa (job #651344)
Cod sursa(job #651344)
#include <stdio.h>
#include <stdlib.h>
#define NMax 100010
FILE *f,*g;
int n,m,s,viz[NMax],C[NMax];
struct nod
{
int inf;
nod *urmatorul;
}*l[NMax];
void adugare(nod *&p,int inf)
{
nod *q=(nod*)malloc(sizeof(nod));
q->inf=inf;
q->urmatorul=p;
p=q;
}
void BFS(int s)
{
int p=1,u=1,x;
nod *q;
C[1]=s;
viz[s]=0;
while(p<=u)
{
x=C[p++];
for(q=l[x];q;q=q->urmatorul)
{
if(viz[q->inf]==-1)
{
viz[q->inf]=viz[x]+1;
C[++u]=q->inf;
}
}
}
}
void read()
{
int i,x,y;
f=fopen("bfs.in","r");
fscanf(f,"%d%d%d",&n,&m,&s);
g=fopen("bfs.out","w");
for(i=1;i<=n;i++)
viz[i]=-1;
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&x,&y);
adaugare(l[x],y);
}
fclose(f);
}
int main()
{
int i;
read();
BFS(s);
for(i=1;i<=n;i++)
fprintf(g,"%d ",viz[i]);
fclose(g);
return 0;
}