Cod sursa(job #1892139)

Utilizator AsttridMocanu Ada Astrid Asttrid Data 24 februarie 2017 18:46:20
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int oo=100002;
struct nod{int inf;nod*urm;};
nod*L[oo];
int n,m,viz[oo],s;

void citire(){
in>>n>>m>>s;
int i,x,y;
nod *p;
for(i=1;i<=m;i++)
{ in>>x>>y;
p=new nod;
p->inf=y;
p->urm=L[x];
L[x]=p;
}
}


void bfs(int x){nod*q;
int i,p,u,y,c[oo];
for(i=1;i<=n;i++)
    viz[i]=-1;
viz[x]=0;
p=u=1;
c[u]=x;
while(p<=u){
    y=c[p];p++;
q=L[y];
while(q){
    if(viz[q->inf]==-1){
        viz[q->inf]=viz[y]+1;
        c[++u]=q->inf;}
q=q->urm;}
}
}

void rez(){
bfs(s);
int i;
for(i=1;i<=n;i++)
    out<<viz[i]<<" ";
out<<"\n";
}



int main(){
citire();
rez();
in.close();
out.close();
return 0;}