Cod sursa(job #1180487)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 30 aprilie 2014 18:22:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<fstream>
#include<iostream>
#include<vector>
#include<queue>
#define MaxN 100010
using namespace std;


int N,Start,dist[MaxN];
vector <int> Muchie[MaxN];
queue <int> Queue;

void citire() {

    ifstream in("bfs.in");
    int M,x,y,i;
    in>>N>>M>>Start;
    for(i=1;i<=M;i++){
        in>>x>>y;
        Muchie[x].push_back(y);
    }
    in.close();

}

void solve() {

    int i,vecin,nod;
    Queue.push(Start);
    dist[Start]=1;
    while(!Queue.empty()){
        nod=Queue.front();
        Queue.pop();
        for(i=0;i<Muchie[nod].size();i++) {
            vecin=Muchie[nod][i];
            if(!dist[vecin]) {
                dist[vecin]=dist[nod]+1;
                Queue.push(vecin);
            }
        }
    }

}

void afisare() {

    ofstream out("bfs.out");
    for(int i=1;i<=N;i++)
        out<<dist[i]-1<<' ';
    out<<'\n';
    out.close();

}

int main() {

    citire();
    solve();
    afisare();
    return 0;

}