Cod sursa(job #1729884)

Utilizator xSliveSergiu xSlive Data 15 iulie 2016 19:02:49
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
#include <iterator>
#include <queue>
#define NMAX 100005
using namespace std;
vector<int> vecini[NMAX];
int cost[NMAX];
int freq[NMAX];
int main()
{
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    int el,n,m,a,b,start,current;
    vector<int>::iterator it;
    f >> n >> m >>start;
    for(int i=0;i<m;i++){
        f >> a >> b;
        vecini[a].push_back(b);
    }
    queue<int> c;
    c.push(start);
    freq[start]=1;
    cost[start]=0;
    while(!c.empty()){
        current = c.back();
        c.pop();
        for(it=vecini[current].begin();it!=vecini[current].end();it++){
            if(!freq[*it]){
                freq[*it]++;
                cost[*it]=cost[current]+1;
                c.push(*it);
            }
        }
    }
    for(int i=1;i<=n;i++)
        if(freq[i]) g << cost[i] << " ";
        else g << -1 << " ";
    return 0;
}