Cod sursa(job #2628208)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 14 iunie 2020 23:12:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include<bits/stdc++.h>

using namespace std;

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

int n,m,x,sol[100005];
vector<int> vecini[100005];
bool carac[100005];
queue<int> coada;

void bfs()
{
 coada.push(x);
 carac[x]=1;
 while( !coada.empty() )
  {
   int cpy=coada.front();
   coada.pop();
   for(int i=1;i<=vecini[cpy][0];i++)
    if( carac[vecini[cpy][i]]==0 )
    {
      int t=vecini[cpy][i];
      carac[t]=1;
      coada.push(t);
      sol[t]=sol[cpy]+1;
    }
  }
 for(int i=1;i<=n;i++) if(sol[i]==0&&i!=x) sol[i]=-1;
}

int main()
{
f>>n>>m>>x;
for(int i=1;i<=n;i++) vecini[i].push_back(0);

for(int i=1;i<=m;i++)
 {
   int a,b;
   f>>a>>b;
   vecini[a][0]++;
   vecini[a].push_back(b);
 }

bfs();
for(int i=1;i<=n;i++) g<<sol[i]<<' ';
}