Cod sursa(job #1086290)

Utilizator diana97Diana Ghinea diana97 Data 17 ianuarie 2014 22:22:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>

using namespace std;

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


int n, m, s;
int d[100001];
vector <int> graf[100001];
queue <int> q;

void citeste () {
    f>>n>>m>>s;
    int a, b;
    for (int i=1; i<=m; i++) {
        f>>a>>b;
        graf[a].push_back (b);
        //graf[b].push_back (a);
    }
    memset (d, -1, sizeof (d));
}

void BFS () {
    q.push (s);
    d[s] = 0;
    int l;
    int nod;

    while (!q.empty ()) {
        l = graf[q.front ()].size ();
        for (int i=0; i<l; i++) {
            nod = graf[q.front ()][i];
            //cout<<nod<<endl;
            if (d[nod] == -1) {
                d[nod] = d[q.front ()]+1;
                q.push (nod);
            }
        }
        q.pop ();
    }
}

void scrie () {
    for (int i=1; i<=n; i++) {
         g<<d[i]<<' ';
    }
}

int main () {
    citeste ();
    BFS ();
    scrie ();
    return 0;
}