Cod sursa(job #1492828)

Utilizator DobosDobos Paul Dobos Data 28 septembrie 2015 11:30:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
const int MAX = 1e5 + 5;
vector < int > q[MAX];
deque < int > lx;
int v[MAX];
inline void bfs(int  s)
{
    int  x;
    v[s] = 0 ;
    lx.push_back(s);
    while(!lx.empty()){
            x = lx.front();
            lx.pop_front();
            for(int i = 0; i < q[x].size(); i++)
                if(v[q[x][i]] == -1){
                    v[q[x][i]] = v[x] + 1;
                    lx.push_back(q[x][i]);
                }
    }
}

int main()
{
    int n, m , s,x,y;
    fin >> n >> m >> s;
    for(int i = 0; i < m; i++){
        fin >> x >> y;
        q[x].push_back(y);
    }
    memset(v,-1,sizeof(v));
    bfs(s);
    for(int i = 1; i <= n; i++)
        fout << v[i] <<" ";
    return 0;
}