Cod sursa(job #956878)

Utilizator cousin.batmanVaru Batman cousin.batman Data 3 iunie 2013 23:18:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream>
#include<list>
#include<vector>
#include<cstdio>

using namespace std;

int main(){
    int n, m, s, i, x, y;
    freopen("bfs.in", "rt", stdin);
    freopen("bfs.out", "wt", stdout);

    scanf("%d %d %d", &n, &m, &s);
    list<int> G[n+1], q;
    vector<int> d(n+1, -1);

    for(i=0; i<m; i++){
        scanf("%d %d", &x, &y);
        G[x].push_back(y);
    }

    q.push_back(s);
    d[s]=0;
    while(q.size()>0){
        x = q.front(), q.pop_front();

        for(auto it=G[x].begin(); it!=G[x].end(); it++){
            if(d[*it]==-1)
                q.push_back(*it), d[*it] = d[x]+1;
        }
    }

    for(i=1; i<=n; i++)
        printf("%d ", d[i]);


    fclose(stdin);
    fclose(stdout);
    return 0;
}