Cod sursa(job #1820454)

Utilizator Cudrici_CarinaCudrici Carina Cudrici_Carina Data 1 decembrie 2016 19:03:10
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>
#include <queue>
#define DIM 100001
using namespace std;
ifstream fi("bfs.in");
ofstream fo("bfs.out");
int v[DIM],d[DIM],n,m,s;
vector <int>  G[DIM];

void ReadGraph()
{
  fi>> n >> m >> s;
  int x, y;
  while(fi>> x >> y)
  {G[x].push_back(y);}

}

void Bfs(int x)
{ queue<int> Q;
 v[x] = true;
 d[x] = 0;

 for(Q.push(x); !Q.empty() ;Q.pop())
     { x=Q.front();
       for(size_t i = 0; i < G[x].size(); ++i)
           {
            int y = G[x][i];
            if( v[y] ) continue;
            v[y] = true;
            d[y] = d[x]+1;
            Q.push(y);
           }
     }

}
int main()
{ ReadGraph();
  Bfs(s);

  for(int i=1;i<=n;i++)
    if(d[i]==0 and i!=s) fo<<"-1 ";
                    else fo<<d[i]<<" ";

    return 0;
}