Cod sursa(job #2195422)

Utilizator DumitresculEDumitrescul Eduard DumitresculE Data 16 aprilie 2018 13:16:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int start[100005], t[2][1000005], coada[100005], viz[100005];
int n, m, pr, ul, nr, sursa;
void citire(){
    f>>n>>m>>sursa;
    int k, i, j, l;
    k=0;
    for(l=1;l<=m;l++){
        f>>i>>j;
        if(i!=j){
            k++;
            t[0][k]=j;
            t[1][k]=start[i];
            start[i]=k;
        }
    }
}
void BFS(){
    int i,x,y;
    for(i=1;i<=n;i++) viz[i]=-1;
    coada[1]=sursa;
    pr=ul=nr=1;
    viz[sursa]=0;
    while(nr!=0){
        x=coada[pr];
        for(i=start[x];i!=0;i=t[1][i]){
            y=t[0][i];
            if(viz[y]==-1){
                viz[y]=1+viz[x];
                ul++;nr++;
                coada[ul]=y;
            }
        }
        pr++;nr--;
    }
}
void afis(){
    int i;
    for(i=1;i<=n;i++)
        g<<viz[i]<<" ";
}
int main()
{
    citire();
    BFS();
    afis();
    return 0;
}