Cod sursa(job #2439863)

Utilizator popesculucaPopescu Luca popesculuca Data 16 iulie 2019 23:51:14
Problema BFS - Parcurgere in latime Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream   in("bfs.in");
ofstream out("bfs.out");
vector <int> g[100001];
int n , m ;
int dist[100001];
int f[100001];

void bfs (int src)
{
    queue <int> q;
    while (q.size())
        q.pop();
    q.push(src);

    for (int i=0 ; i<=n ; i++)
    {
        dist[i]=0;
        f[i]=0;
    }
    while (!q.empty())
    {
     int u=q.front();
     q.pop();
     for (int i=0 ; i<g[u].size() ; i++)
     {
      int v=g[u][i];
      if (!f[v])
      {
        f[v]=1;
        dist[v]=dist[u]+1;
        q.push(v);
      }
     }
    }

}
int main()
{
    int x , y , s;
    in>>n>>m>>s;
    for (int i=0 ; i<m ; i++)
    {
        in>>x>>y;
        if (x!=y)
        g[x].push_back(y);
       // g[y].push_back(x);
    }

    bfs(s);
    for (int i=1 ; i<=n ; i++)
    {
        if (dist[i]==0)
            out<<-1<<' ';
        else
         if (i==s)
            out<<0<<' ';
        else
            out<<dist[i]<<' ';
    }
    return 0;
}