Cod sursa(job #2422884)

Utilizator malina99oanea ana malina malina99 Data 20 mai 2019 11:03:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <vector>
#include <fstream>
#include <iostream>
#include <queue>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int s, n, m, nr;
vector <int> graps[100008];
queue <int> co;

int viz[100008], drum[100008];

void read() {
    f >> n >> m >> s;
    for( int i = 0; i < m; i++ ) {
        int x, y;
        f >> x >> y;
        graps[x].push_back(y);
    }
    co.push(s);
    viz[s] = 1;
}

void bfs() {
    while( !co.empty() ) {
        int x = co.front();
        co.pop();
        int lim = graps[x].size();
        for( int i = 0; i < lim; i++ ) 
            if( !viz[ graps[x][i] ] ) {
                co.push( graps[x][i] );
                drum[ graps[x][i] ] = drum[x] + 1;
                viz[ graps[x][i] ] = 1;
            }
    }
}

int main() {
    read();
    for(int i = 1; i <= n; i++)
        drum[i] = -1;
    drum[s] = 0;
    bfs();
    for( int i = 1; i <= n; i++)
        g << drum[i] << " ";
    return 0;
}