Cod sursa(job #705167)

Utilizator xulescuStefu Gabriel xulescu Data 3 martie 2012 15:50:28
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <queue>
#include <vector>

#define NMAX 100001

using namespace std;

int n,m,s;
queue<int> q;
vector<int> graf[NMAX];
int dist[NMAX];
bool viz[NMAX];

void bfs(){
    q.push(s);
    dist[s]=0;
    int cur;
    while(!q.empty()){
        cur = q.front();
        q.pop();
        viz[cur]=true;
        vector<int>::iterator it;
        for(it = graf[cur].begin(); it!=graf[cur].end(); it++){
            if(!viz[*it]){ q.push(*it); dist[*it]=dist[cur]+1; }
        }
    }
}


int main(){
    ifstream f("bfs.in");
    f >> n >> m >> s;
    int a,b;
    for(int i=0; i<m; i++){
        f>>a>>b;
        graf[a].push_back(b);
    }
    f.close();
    for(int i=1;i<=n;i++) dist[i]=-1;

    bfs();

    ofstream g("bfs.out");
    for(int i=1;i<=n;i++) g << dist[i] <<" ";
    g.close();
    return 0;
}