Cod sursa(job #1214319)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 30 iulie 2014 01:49:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 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;
bool viz[100001];
int sol[100001];

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