Pagini recente » Cod sursa (job #498111) | Cod sursa (job #612709) | Cod sursa (job #561078) | Cod sursa (job #114644) | Cod sursa (job #607889)
Cod sursa(job #607889)
#include <iostream>
#include <stdio.h>
#define max 100000
struct art { int val; art *urm;};
using namespace std;
long m,n,pr,u,a,b,s;
int viz[max],i,c[max];
FILE *f,*g;
int main()
{ art *aux;
art *p[max];
f=fopen("bfs.in","r");
g=fopen("bfs.out","w");
fscanf(f,"%ld %ld %ld\n",&n,&m,&s);
for(i=1;i<=m;i++)
{fscanf(f,"%ld %ld",&a,&b);
aux=new art;
aux->val=b;
aux->urm=p[a];
p[a]=aux;
}
viz[s]=1;
c[1]=s;
pr=1;u=1;
while(pr<=u){
aux=p[c[pr]];
while(aux!=NULL){
if(viz[aux->val]==0){u++; c[u]=aux->val;viz[aux->val]=viz[c[pr]]+1;}
aux=aux->urm;
}
pr++;
}
viz[s]=0;
for(i=1;i<=n;i++)
{if(i!=s&&viz[i]==0)viz[i]=-1;
if(i!=s&&viz[i]>0)viz[i]=viz[i]-1;
fprintf(g,"%ld ",viz[i]);
}
fclose(f);
fclose(g);
return 0;
}