Cod sursa(job #1676038)

Utilizator TimoteiCopaciu Timotei Timotei Data 5 aprilie 2016 18:15:28
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
using namespace std;

int n, m, s, x, y, dist[100005], nod;
vector <int> vecin[100005];
queue <int> C;
int main()
{
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    f >> n >> m >> s;
    for(int i = 1; i <= n; i++)
        vecin[i].push_back(0);
    for(int i = 1; i <= m; i++){
        f >> x >> y;
        vecin[x].push_back(y);
        vecin[x][0]++;
    }
    dist[s] = 1;
    C.push(s);
    while(!C.empty()){
        nod = C.front();
    for(int i = 1; i <= vecin[nod][0]; ++i){
        if(dist[vecin[nod][i]] == 0){
            C.push(vecin[nod][i]);
            dist[vecin[nod][i]] = dist[nod] + 1;
        }
    }
    C.pop();
    }
    for(int i = 1; i <= n; ++i)
        if(dist[i] != 0) g << dist[i] - 1 << ' ';
          else g << "-1 ";
    return 0;
}