Cod sursa(job #2796656)

Utilizator bogdan2405Strat Bogdan-Valentin bogdan2405 Data 8 noiembrie 2021 16:54:31
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include<bits/stdc++.h>

using namespace std;

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

vector<int> adjList[100001];
vector<int> dist;
vector<int> visit;
queue<int> q;
int distanta=0;

void BFS(int x){
    int i;
    q.push(x);
    if(visit[x-1]==0){
        dist[x-1]=distanta;
    visit[x-1]++;
     distanta++;
    }
    
    //g<<x<<' ';
   

    while(!q.empty()){
        int first=q.front();
        int ok=0;
        q.pop();

        for(i=0;i<adjList[first].size();++i){
            if(visit[adjList[first][i]-1]==0){
                visit[adjList[first][i]-1]++;
                dist[adjList[first][i]-1]=distanta;
                q.push(adjList[first][i]);
                ok=1;
               // g<<adjList[first][i]<<' ';
            }
        }
        if(ok==1)
            distanta++;
        
        ok=0;
       
    }

}

int main(){
    int n,m,s,a,b;
    f>>n>>m>>s;
    int i;
    
    for(i=0;i<n;++i){
        visit.push_back(0);
        dist.push_back(0);
    }
        

    for(i=0;i<m;++i){
        f>>a>>b;
        adjList[a].push_back(b);
    }

    
    BFS(s);

    for(i=0;i<n;++i){
        if(visit[i]==0){
            dist[i]=-1;
        }
    }

    for(i=0;i<n;++i)
       g<<dist[i]<<' ';
    return 0;
}