Cod sursa(job #1029245)

Utilizator dan.ghitaDan Ghita dan.ghita Data 15 noiembrie 2013 10:42:23
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int m, n, s, a, b, nr=1, c[100002];
deque<int>  q;
vector< vector<int> > lv;
vector<int>::iterator it;
void citire(){
f>>n>>m>>s;
lv.resize(n+1);
for(int i=0; i<m; ++i){
    f>>a>>b;
    lv[a].push_back(b);
    }
}

void bfs(int x){
q.push_back(x);
c[x]=0;
while(!q.empty()){
    a=q.front();
    q.pop_front();
    for(it=lv[a].begin(); it!=lv[a].end(); ++it)
    if(!c[*it]&&*it!=s){
        c[*it]=c[a]+1;
        q.push_back(*it);}
    }
}
int main()
{
    citire();
    bfs(s);
    c[s]=0;
    for(int i=1; i<=n; ++i){
    if(c[i]==0&&i!=s) g<<-1<<' ';
    else
        g<<c[i]<<' ';

    }
    g.close();
    return 0;
}