Cod sursa(job #2796688)

Utilizator bogdan2405Strat Bogdan-Valentin bogdan2405 Data 8 noiembrie 2021 17:20:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 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]=dist[first-1]+1;
                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;
}