Cod sursa(job #2674854)

Utilizator DooMeDCristian Alexutan DooMeD Data 20 noiembrie 2020 15:49:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

const int nmax = 100000;

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

vector <int> ad[nmax+5];
vector <int> ::iterator it;
queue <int> q;

int n,m,s,vz[nmax+5];

int main() {
  f >> n >> m >> s;
  int x,y;
  for(int i=1; i<=m; i++) {
    f >> x >> y;
    ad[x].push_back(y);
  }
  vz[s]++;
  q.push(s);
  while(!q.empty()) {
    int now = q.front();
    q.pop();
    for(it=ad[now].begin(); it!=ad[now].end(); ++it)
      if(!vz[*it]) {
        vz[*it]=vz[now]+1;
        q.push(*it);
      }
  }
  for(int i=1; i<=n; ++i) {
    if(!vz[i])
      g << -1 << " ";
    else {
      if(i == s)
        g << 0 << " ";
      else
        g << vz[i]-1 << " ";
    }
  }
  return 0;
}