Cod sursa(job #2134519)

Utilizator problem_destroyer69Daniel Hangan problem_destroyer69 Data 18 februarie 2018 00:15:35
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define ll long long
#define pb push_back
#define INF 1000000005
#define LINF 1000000000000000005
#define MAXN 100005
#define pi pair<int,int>
#define pl pair<ll,ll>
int n,m,s,ans[100005];
vector <int> g[100005];
bool v[100005];
queue <int> q;
void BFS(int node){
    v[node]=true;
    ans[node]=0;
    q.push(node);
    while (!q.empty()){
        int s=q.front();
        q.pop();
        for (auto i:g[s])
        if (v[i]==false){
                v[i]=true;
                ans[i]=ans[s]+1;
                q.push(i);
        }
}
}
signed main() {
ifstream fin("bfs.in");
ofstream fout("bfs.out");
fin>>n>>m>>s;
for (int i=1;i<=m;i++){
    int x,y;
    fin>>x>>y;
    g[x].pb(y);
}
BFS(s);
for (int i=1;i<=n;i++)
    if (ans[i] || i==s) fout<<ans[i]<<' ';
    else fout<<-1<<' ';
}