Cod sursa(job #1397522)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 23 martie 2015 16:29:11
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

#define inFile "bfs.in"
#define outFile "bfs.out"
#define MAX_N 100001

int dist[MAX_N];
vector <int> ad[MAX_N];
queue <int> q;

int main() {
    ifstream in(inFile);
    ofstream out(outFile);
    
    int n, m, s, i, x, y;
    
    in >> n >> m >> s;
    for(i = 1; i <= m; i++) {
        in >> x >> y;
        ad[x].push_back(y);
    }
    
    dist[s] = 1;
    q.push(s);
    while(!q.empty()) {
        x = q.front();
        q.pop();
        
        for(i = 0; i < ad[x].size(); i++) {
            y = ad[x][i];
            if(!dist[y]) {
                dist[y] = dist[x] + 1;
                q.push(y);
            }
        }
    }
    
    for(i = 1; i <= n; i++)
        out << dist[i]-1 << ' ';
    out << '\n';
    
    return 0;
}