Cod sursa(job #3040634)

Utilizator EnergyIpadCatalin Ispas EnergyIpad Data 30 martie 2023 10:58:36
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <bits/stdc++.h>
#include <vector>

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

int main()
{
    vector<int> a[1001];
    int n,m,start,x,y;
    fin>>n>>m>>start;
    while(fin>>x>>y){
        a[x].push_back(y);
    }
    for(int i=0;i<=n;i++){
        sort(a[i].begin(),a[i].end());
    }
    
    int distance[1001]={-1};
    for(int i=1;i<=n;i++){
        distance[i]=-1;
    }
    distance[start]=0;
    
    queue<int> orase;
    
    int vizite[1001]={0};
    vizite[start]=1;
    orase.push(start);
    while(!orase.empty()){
        int city=orase.front();
        for(auto vecin:a[city]){
            if (vizite[vecin]==0){
                vizite[vecin]=1;
                orase.push(vecin);
                
                distance[vecin]=distance[city]+1;
            }
        }
        orase.pop();
    }
    
    for (int i=1;i<=n;i++){
        if (vizite[i]==0){
            fout << "-1 ";
        }else{
            fout << distance[i] << " ";
        }
    }

    return 0;
    
}