Cod sursa(job #2568184)

Utilizator MihclerioVladimir Chim Mihclerio Data 3 martie 2020 21:16:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    int n,m,k;
    cin>>n>>m>>k;
    vector<int>v[n+3];
    for(int i=1;i<=m;i++)
    {
      int x,y;
      cin>>x>>y;
      v[x].push_back(y);
    }
    vector<int>d(n+3),p(n+3);
    vector<bool>f(n+3);
    queue<int>q;
    q.push(k);
    d[k]=0;
    f[k]=1;
    p[k]=-1;
    while(!q.empty())
    {
      int node=q.front();
      q.pop();
      for(auto it:v[node])
      if(!f[it])
      {
        d[it]=d[node]+1;
        p[it]=node;
        f[it]=1;
        q.push(it);
      }
    }
    for(int i=1;i<=n;i++)
    if(f[i]) cout<<d[i]<<" "; else cout<<"-1 ";
}