Cod sursa(job #2388593)

Utilizator T_george_TGeorge Teodorescu T_george_T Data 26 martie 2019 11:03:40
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb

#include <bits/stdc++.h>

using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
#define NMAX 100001
struct poz{
    int val,i;
}aux,aux1;
vector <int>v[NMAX];
queue <poz>q;
int cnt,X,drum[NMAX];
bool seen[NMAX];
void bfs(){
  aux.i=X;
  aux.val=0;
  q.push(aux);
  while(!q.empty()){
    aux=q.front();
    seen[aux.i]=1;
    q.pop();
    for(int j=0;j<v[aux.i].size();j++){
        if(!seen[v[aux.i][j]]){
        drum[v[aux.i][j]]=aux.val+1;
        aux1.i=v[aux.i][j];
        aux1.val=aux.val+1;
        q.push(aux1);
        }
    }
  }
  return;
}
int main()
{
    int n,m;
    in>>n>>m>>X;
    for(int i=1;i<=m;i++){
            int x,y;
    in>>x>>y;
        v[x].push_back(y);
    }
    bfs();
    for(int i=1;i<=n;i++)
      if(seen[i])
      out<<drum[i]<<" ";
    else
        out<<-1<<" ";
    return 0;
}