Cod sursa(job #1503495)

Utilizator seba1234Seba Stanici seba1234 Data 16 octombrie 2015 12:35:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <string.h>

using namespace std;

vector<int> v[100005];
int D[100005];
int n,m,S;
queue<int> Q;

void Read(){
    ifstream fin("bfs.in");
    int a,b;
    fin >> n >> m >> S;
    for(int i=0;i<m;i++){ fin >> a >> b;
        v[a].push_back(b);
        //v[b].push_back(a);
    }
    memset(D,-1,sizeof(D));
}

void Print(){
    /*for(int i=1;i<=n;i++){ cout << i << ":";
        for(int j=0;j<v[i].size();j++)
            cout << v[i][j];
        cout << '\n';
    }
    cout << '\n';*/
    ofstream fout("bfs.out");
    for(int i=1;i<=n;i++)
        fout << D[i] << ' ';
}

void BFS(){
    Q.push(S);
    int s;
    D[S]=0;
    while(!Q.empty()){
        s=Q.front(); Q.pop();
        for(int i=0;i<v[s].size();i++){
            if(D[v[s][i]]==-1){
                D[v[s][i]]=D[s]+1;
                Q.push(v[s][i]);
            }
        }
    }
}

int main()
{
    Read();
    BFS();
    Print();
}