Cod sursa(job #953188)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 25 mai 2013 11:37:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <list>

#define DIMN 100010
using namespace std;

list<int> L[DIMN];

int c[DIMN];
int v[DIMN];

int n,m,s,i,x,y;

void bfs(int x) {
    int first;
    int p = 1;
    int u = 1;
    c[p] = x;
    v[x] = 1;
    while (p<=u) {
        // punem in coada vecinii lui c[p];
        first = c[p];
        for (list<int>::iterator it = L[first].begin(); it!=L[first].end(); it++) {
            if (v[*it] == 0) {
                u++;
                c[u] = *it;
                v[*it] = v[first] + 1;
            }
        }
        p++;
    }
}

int main() {
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    fin>>n>>m>>s;
    for (i=1;i<=m;i++) {
        fin>>x>>y;
        L[x].push_back(y);
    }

    bfs(s);
    for (i=1;i<=n;i++)
        fout<<v[i]-1<<" ";
    fout<<"\n";

    return 0;
}