Cod sursa(job #2515240)

Utilizator leru007Leru Ursu leru007 Data 28 decembrie 2019 10:06:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>
#define ll long long
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define pb push_back
#define f first
#define sc second
using namespace std;
ll mod=1e9+7,i,j;
ll n,m,root;
vector<ll>nod[100005];
ll dis[100005];
queue<ll>q;
void bfs(ll x){
    q.push(x);
    while(q.empty()==0){
            ll vertex=q.front();
            q.pop();
            for(unsigned k=0;k<nod[vertex].size();k++){
                ll vecin=nod[vertex][k];
                if(dis[vecin]==-1){
                    q.push(vecin);
                    dis[vecin]=dis[vertex]+1;
                }
            }
    }
}
int main(){
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    fin>>n>>m>>root;
    for(i=1;i<=m;i++){
        ll x,y;
        fin>>x>>y;
        nod[x].pb(y);
    }
    for(i=1;i<=n;i++) dis[i]=-1;
    dis[root]=0;
    bfs(root);
    for(i=1;i<=n;i++){
        fout<<dis[i]<<" ";
    }
    return 0;
}