Cod sursa(job #1214087)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 29 iulie 2014 16:39:59
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <deque>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

vector < int > v[100001];
deque < int > p[2];
bool viz[100001];
int sol[100001];

int main()
{
    int N,M,S,x,y,d = 0,nod;
    f >> N >> M >> S;
    for(int i = 1; i <= M; i++){
        f >> x >> y;
        v[x].push_back(y);
    }
    p[0].push_back(S);
    p[1].push_back(d);
    while(p[0].empty() == false){
        nod = p[0][0];
        d = p[1][0];
        viz[nod] = 1;
        sol[nod] = d;
        d++;
        for(int i = 0; i < v[nod].size(); i++){
            if(viz[v[nod][i]] == 0){
                p[0].push_back(v[nod][i]);
                p[1].push_back(d);
            }
        }
        p[0].pop_front();
        p[1].pop_front();
    }
    for(int i = 1; i <= N; i++){
        if(sol[i] == 0 && i != S)
            g << -1 << " ";
        else
            g << sol[i] << " ";
    }
    return 0;
}