Cod sursa(job #2485644)

Utilizator MariusblockMoga Marius-Ioan Mariusblock Data 1 noiembrie 2019 20:46:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.48 kb
#include <bits/stdc++.h>
#define MOD 1999999973
#define ull unsigned long long

using namespace std;


/*
░▄▀▄▀▀▀▀▄▀▄░░░░░░░░░
░█░░░░░░░░▀▄░░░░░░▄░
█░░▀░░▀░░░░░▀▄▄░░█░█
█░▄░█▀░▄░░░░░░░▀▀░░█
█░░▀▀▀▀░░░░░░░░░░░░█
█░░░░░░░░░░░░░░░░░░█
█░░░░░░░░░░░░░░░░░░█
░█░░▄▄░░▄▄▄▄░░▄▄░░█░
░█░▄▀█░▄▀░░█░▄▀█░▄▀░
░░▀░░░▀░░░░░▀░░░▀░░░
*/

ifstream fin("bfs.in");
ofstream fout("bfs.out");

vector<int> G[100005];
queue<int> bfs;
int viz[100005];

int main()
{
    int n,m,S;
    int i,x,y,k = 0,vecin;
    fin>>n>>m>>S;
    for(i = 1; i <= m; i++){
        fin>>x>>y;
        G[x].push_back(y);
    }
    bfs.push(S);
    while(!bfs.empty()){
        for(i = 0; i < G[bfs.front()].size(); i++){
            vecin = G[bfs.front()][i];
            if(viz[vecin] == 0 && vecin != S){
                viz[vecin] = viz[bfs.front()] + 1;
                bfs.push(vecin);
            }
        }
        bfs.pop();
    }
    for(i = 1; i <= n; i++){
        if(viz[i] == 0 && i != S){
            fout<<"-1 ";
        }else{
            fout<<viz[i]<<" ";
        }
    }
    return 0;
}