Cod sursa(job #2223047)

Utilizator ana.mitranMitran Ana Theodora ana.mitran Data 18 iulie 2018 23:06:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
#include <algorithm>

using namespace std;

const int NMAX=100000;
vector<int> G[NMAX+5];
vector<int> viz, dist;
vector <int>::iterator it;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

void bfs(int u, int cc)
{
  queue <int> q;int v;
  viz[u]=cc;
  q.push(u);
  while(!q.empty())
  {
    u=q.front();
    q.pop();
    for(it=G[u].begin(); it!=G[u].end(); it++ )
    {
      v=*it;

      if(!viz[v])
      {
        viz[v]=cc;
        dist[v]=dist[u]+1;
        q.push(v);
      }
    }
  }
}
int main()
{
    int n, m, u, v, i, cc=1, s;
    fin>>n>>m>>s;
    for(i=1;i<=m;i++)
    {
      fin>>u>>v;
      G[u].push_back(v);
    }
    viz.assign(n+1, 0);
    dist.assign(n+1, 0);
    bfs(s, cc);
    for(i=1;i<=n;i++)
    {
      if(i!=s && viz[i]==0)
        dist[i]=-1;
      fout<<dist[i]<<" ";
    }
    return 0;
}