Cod sursa(job #2388583)

Utilizator T_george_TGeorge Teodorescu T_george_T Data 26 martie 2019 10:52:53
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 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;
bool seen[NMAX];
void bfs(int i){
  aux.i=X;
  aux.val=0;
  q.push(aux);
  while(!q.empty()){
    aux=q.front();
    seen[aux.i]=1;
    if(aux.i==i){
        out<<aux.val<<" ";
        return ;
    }
    q.pop();
    for(int j=0;j<v[aux.i].size();j++){
        if(!seen[v[aux.i][j]]){
        aux1.i=v[aux.i][j];
        aux1.val=aux.val+1;
        q.push(aux1);
        }
    }
  }
  out<<-1<<" ";
  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);
    }
    for(int i=1;i<=n;i++){
            bfs(i);
    while(!q.empty())
    q.pop();
   memset(seen,0,sizeof(seen));
    }
    return 0;
}