Cod sursa(job #2407003)

Utilizator LucianTLucian Trepteanu LucianT Data 16 aprilie 2019 13:18:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

const int maxN=1e5+1;
const int INF=(1<<30);

int n,m,source;
vector<int> v[maxN];

bool vis[maxN];
int dist[maxN];

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

    f>>n>>m>>source;
    for(int i=1;i<=m;i++){
        int x,y;
        f>>x>>y;
        v[x].push_back(y);
    }

    for(int i=1;i<=n;i++){
        dist[i]=INF;
    }

    queue<int> Que;

    dist[source]=0;
    vis[source]=true;
    Que.push(source);

    while(!Que.empty()){
        int nod=Que.front();
        Que.pop();

        for(auto it:v[nod])
            if(!vis[it]){
                dist[it]=dist[nod]+1;
                vis[it]=true;
                Que.push(it);
            }
    }    

    for(int i=1;i<=n;i++){
        if(dist[i]==INF){
            g<<-1<<" ";
        } else {
            g<<dist[i]<<" ";
        }
    }

    return 0;
}