Cod sursa(job #1905893)

Utilizator roxi22Roxi C. roxi22 Data 6 martie 2017 11:31:10
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <fstream>
#include <bits/stdc++.h>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

#define nmax 100001

vector<int>ad[nmax];
queue<int> coadaRoxi;

int n,m,vf,x,y;
int viz[nmax];

void bfs(int n,int vf){
    int c[nmax]={0},inc,sf;
    inc=1;
    sf=1;
    viz[vf]=1;
    c[inc]=vf;
    while(inc<=sf)
        {for(int i=0;i<ad[c[inc]].size();i++){
            if(viz[ad[c[inc]][i]]==0) {
                sf++;
                c[sf]=ad[c[inc]][i];
                viz[ad[c[inc]][i]]=viz[c[inc]]+1;
                //fout<<ad[c[inc]][i]<<" ";
                }
                }
            inc++;

            }

}
/*
void bfs2() {
    while(coadaRoxi.size()) {
        int nodC=coadaRoxi.front();
        coadaRoxi.pop();
        for(int i=0;i<ad[nodc].size();i++) {
            int nodVecin = ad[nodC][i];
            if(!viz[nodVecin]) {
                coadaRoxi.push(nodVecin);
                viz[nodVecin]=viz[nodC]+1;
            }
        }
    }
}
*/
int main()
{
    fin>>n>>m>>vf;
    for(int i=1;i<=m;i++)
        {fin>>x>>y;
        ad[x].push_back(y);
        //ad[y].push_back(x);
        }
    coadaRoxi.push(vf);
    bfs(n,vf);
    for(int i=1;i<=n;i++)
        fout<<viz[i]-1<<" ";
   // bfs2();

    return 0;
}