Cod sursa(job #894349)

Utilizator nightwolffbaFMI-Fritz Bogdan-Adrian nightwolffba Data 26 februarie 2013 20:47:58
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#include<vector>
#include<queue>
#define maxN 100000
using namespace std;

int N,M,S;
vector<int> Viz;
vector<vector<int> > a;
queue<int> Q;

ifstream f("bfs.in");
ofstream g("bfs.out");

void citire(){
    int x,y;
    f>>N>>M>>S;
    Viz.resize(N+1);
    a.resize(N+1);
    for(int i=1;i<=M;i++){
        f>>x>>y;
        a[x].push_back(y);
    }
    for(int i=1;i<=N;i++)
        Viz[i]=-1;
}

void bfs(){
    while(!Q.empty()){
        int nod=Q.front();
        Q.pop();
        for(vector<int>::iterator it=a[nod].begin();it!=a[nod].end();it++)
            if(Viz[*it]==-1){
                Q.push(*it);
                Viz[*it]=Viz[nod]+1;
            }
        }
}

void afisare(){
    for(int i=1;i<=N;i++)
        g<<Viz[i]<<' ';
}

int main(){
    citire();
    Viz[S]=0;
    Q.push(S);
    bfs();
    afisare();
    return 0;
}