Cod sursa(job #2132013)

Utilizator bigmixerVictor Purice bigmixer Data 15 februarie 2018 11:45:30
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <bits/stdc++.h>       // Grandmixer //
#define ll long long
#define sz size
#define pb push_back
#define er erase
#define in insert
#define fr first
#define sc second
#define mp make_pair
#define pi pair
#define _ ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
#define rc(s) return cout<<s,0
const int mod=1e9+7;
const int inf=1e5;
using namespace std;

int n,m,s,x,y,st,dr,c[100005],b[100005],ans[100005],rs=1,dist[100005];
vector<int>nod[1000005];


int BFS(int s){
    st=1; dr=1;
    b[1]=s; c[s]=1;
    while(st<=dr){
        for(int i=0;i<nod[b[st]].size();i++){
            if(b[st]==nod[b[st]][i])continue;
            if(c[nod[b[st]][i]]==0){
                dr++;
                b[dr]=nod[b[st]][i];
                c[nod[b[st]][i]]=1;
                dist[nod[b[st]][i]]=dist[b[st]]+1;
            }
        }
        st++;
    }
}

int main(){
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    fin >> n >> m >> s;
    for(int i=1;i<=m;i++){
        fin >> x >> y;
        nod[x].pb(y);
    }
    BFS(s);
    ans[s]=0;
    for(int i=1;i<=n;i++){
        if(dist[i]==0 && i!=s) cout<<-1<<" ";
        else fout<<dist[i]<<" ";
    }

}