Cod sursa(job #1382321)

Utilizator mariusadamMarius Adam mariusadam Data 8 martie 2015 20:27:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <deque>
#include <vector>
#define n_max 100001

using namespace std;

ifstream r("bfs.in");
ofstream w("bfs.out");

vector <long>::iterator it;
vector <long> g[n_max];
deque <long> q;
long d[n_max];
bool viz[n_max];
long n,m,s;

void read() {
    long i,j,k;
    r>>n>>m>>s;
    for (k=0; k<m; k++) {
        r>>i>>j;
        g[i].push_back(j);
    }
}

void bf(long nod) {
    long prec;
    q.push_back(nod);
    viz[nod]=true;
    while (!q.empty()) {
        prec=q.front();
        q.pop_front();
        for (it=g[prec].begin(); it!=g[prec].end(); it++)
            if (!viz[*it]) {
                viz[*it]=true;
                d[*it]=d[prec]+1;
                q.push_back(*it);
            }
    }
}

int main() {
    long i;
    read();
    bf(s);
    for (i=1; i<=n; i++)
        if (!viz[i])
            w<<-1<<" ";
        else
            w<<d[i]<<" ";
}