Cod sursa(job #2576010)

Utilizator ShouldTryAdam Robert Mihai ShouldTry Data 6 martie 2020 16:43:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
vector <int > v[100005];
queue <int > coada;
bool incoada[100005];
int n, m, d[100005], k;
void citire()
{fin >> n >> m >> k;
 int a, b;
 for (int i=1;i<=m;i++)
     {fin >> a >> b;
      v[a].push_back(b);
     }
}
void bfs(int k)
{incoada[k]=true;
 coada.push(k);
 while (!coada.empty())
      {int elem=coada.front();
       coada.pop();
       for (int i=0;i<v[elem].size();i++)
           {int vecin=v[elem][i];
            if(incoada[vecin]==false)
               {incoada[vecin]=true;
                coada.push(vecin);
                d[vecin]=d[elem]+1;
               }
           }
      }
}
int main()
{citire ();
 bfs(k);
 for (int i=1;i<=n;i++)
      if(d[i]==0 && k!=i)fout << -1 << " ";
      else fout << d[i] << " ";
    return 0;
}