Cod sursa(job #1676013)

Utilizator TimoteiCopaciu Timotei Timotei Data 5 aprilie 2016 18:03:33
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <deque>
#include <bitset>
using namespace std;

int n, m, s, x, y, dist[100005];
deque <int> vecin[100005], C;
bitset <100005> viz;
int main()
{
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    f >> n >> m >> s;
    for(int i = 1; i <= n; i++)
        vecin[i].push_back(0);
    for(int i = 1; i <= m; i++){
        f >> x >> y;
        vecin[x].push_back(y);
        vecin[x][0]++;
    }
    viz[s] = 1;
    C.push_back(s);
    while(!C.empty()){
    for(int i = 1; i <= vecin[C[0]][0]; ++i){
        if(!viz[vecin[C[0]][i]]){
            C.push_back(vecin[C[0]][i]);
            viz[vecin[C[0]][i]] = 1;
            dist[vecin[C[0]][i]] = dist[C[0]] + 1;
        }
    }
    C.pop_front();
    }
    for(int i = 1; i <= n; ++i)
        if(dist[i] != 0) g << dist[i] << ' ';
          else if(i == s) g << "0 ";
          else g << "-1 ";
    return 0;
}