Cod sursa(job #1356442)

Utilizator CalinCojoFMI Cojocaru Calin George CalinCojo Data 23 februarie 2015 13:55:44
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
#include <queue>

using namespace std;

int cost[100001],viz[100001];
deque <int> vecini[100001];
queue <int> coada;

void bfs ( int nod ){

    int i;
    cost[nod] = 0;
    viz[nod] = 1;
    coada.push(nod);

    while(!coada.empty()){
        for(i = 0;i < vecini[nod].size();i++)
            if(viz[vecini[nod][i]   ]==0){

                viz[vecini[nod][i]] = 1;
                cost[vecini[nod][i]] = cost[nod] + 1;
                coada.push(vecini[nod][i]);
            }
        coada.pop();
        if(!coada.empty())
        nod = coada.back();
    }


}

int main()
{
    int n,m,s,i,y;

    ifstream f("bfs.in",ios::in);
    ofstream g("bfs.out",ios::out);
    f>>n>>m>>s;

    while(m){
        f>>i>>y;
        vecini[i].push_back(y);
        m--;
    }

    for(i = 1 ;i <= n; i++)
            cost[i] = -1;
    bfs(s);

     for(i = 1 ;i <= n; i++)
        g<<cost[i]<<" ";
    f.close();
    g.close();

    return 0;
}