Cod sursa(job #1690241)

Utilizator ButmalaiDanButmalai Dan ButmalaiDan Data 14 aprilie 2016 21:43:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<fstream>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
typedef struct nod{
        int data;
        nod* next;
}* graf;
int n,m,s,x,y;
graf a[100010];
int bf[100010],cost[100010];
bool viz[100010];
void add1(graf &p,int x){
     graf z=new nod;
     z->data=x;
     z->next=p;
     p=z;
     }
void bfs(){
     int in=1,sf=1;
     bf[1]=s;
     viz[s]=1;
     while(in<=sf){
                   for(graf z=a[bf[in]];z!=NULL;z=z->next){
                            if(!viz[z->data]){
                                              bf[++sf]=z->data;
                                              cost[z->data]=cost[bf[in]]+1;
                                              viz[z->data]=1;
                            }
                   }
     in++;
     }
}
int main(){
    cin>>n>>m>>s;
    for(int i=0;i<m;i++){
            cin>>x>>y;
            add1(a[x],y);
    }
    bfs();
    for(int i=1;i<=n;i++){
            if(i==s)cout<<"0 ";
            else if(cost[i]==0)cout<<"-1 ";
            else cout<<cost[i]<<" ";
    }
}