Cod sursa(job #3226151)

Utilizator Hasu068Harabagiu Stefan Valentin Hasu068 Data 20 aprilie 2024 11:47:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>

using namespace std;

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

vector<vector<int>>G;

int vis[100001];

queue<int>Coada;
int n, m, s;

void BFS(){
    while(!Coada.empty()){
        int Front = Coada.front();
        Coada.pop();
        for(int i = 0;i<G[Front].size();i++){
            int vec = G[Front][i];
            if(vis[vec]==0){
                Coada.push(vec);
                vis[vec]=vis[Front]+1;
            }
        }
    }
}

int main()
{
    fin >> n >> m >> s;
    G.resize(n+1);
    for(int i = 1;i<=m;i++){
        int a, b;
        fin >> a >> b;
        G[a].push_back(b);
    }
    vis[s]=1;
    Coada.push(s);
    BFS();
    for(int i = 1;i<=n;i++){
            if(vis[i]!=0){
                vis[i]--;
            }

            if(vis[i]==0 && i!=s){
                vis[i]=-1;
            }
        fout << vis[i] << ' ';
    }

    return 0;
}