Pagini recente » Cod sursa (job #2962721) | Cod sursa (job #484044) | Cod sursa (job #2868761) | Cod sursa (job #2496114) | Cod sursa (job #543868)
Cod sursa(job #543868)
#include<fstream.h>
#define maxn 50000
ifstream f("bfs.in");
ofstream g("bfs.out");
long m,n,s,i,j,cost[maxn],viz[maxn],coada[maxn],k=1;
struct nod{
int a;
nod *next;
};
nod *v[maxn];
void add(int x,int y){
nod *q=new nod;
q->a=y;
q->next=v[x];
v[x]=q;
}
void citire(){
int x,y;
f>>n>>m>>s;
for(i=1;i<=m;i++)
f>>x>>y,add(x,y);
}
void parclat(int varf){
nod *q=new nod;
q=v[varf];
while(q) {
if(viz[q->a]==0)
coada[++k]=q->a,cost[q->a]=cost[varf]+1,viz[q->a]=1;
q=q->next;
}
}
int main(){
citire();
coada[1]=s,viz[s]=1;
for(i=1;i<=n;i++)
parclat(coada[i]);
for(i=1;i<=n;i++)
if(cost[i]==0&&i==s)
g<<0<<' ';
else
if(cost[i]==0)
g<<-1<<' ';
else
g<<cost[i]<<' ';
g<<'\n';
g.close();
return 0;
}