Cod sursa(job #705160)

Utilizator xulescuStefu Gabriel xulescu Data 3 martie 2012 15:12:29
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 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(){
    int cnt=0;
    q.push(s);
    int cur;
    while(!q.empty()){
        cur = q.front();
        q.pop();
        dist[cur]=cnt;
        vector<int>::iterator it;
        for(it = graf[cur].begin(); it!=graf[cur].end(); it++){
            if(!viz[*it]) q.push(*it);
        }
        viz[cur]=true;
        cnt++;
    }
}

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;
    dist[s]=0;

    bfs();

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