Cod sursa(job #1673898)

Utilizator mihaelatd96Tudor Mihaela Daniela mihaelatd96 Data 4 aprilie 2016 10:46:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
int n,m,sursa;

vector < vector <int> >graph;
vector<int>visited;

void BFS(int vertex)
{
  if((vertex<0)||(vertex>n-1))
  {
    return;
  }
  queue <int> q;
  int element;
  q.push(vertex);
  visited[vertex]=0;

  while(!q.empty())
  {
    element=q.front();
    for(unsigned int i=0;i<graph[element].size(); i++)
    {
      if(visited[graph[element][i]]==-1)
      {
        q.push(graph[element][i]);
        visited[graph[element][i]]=visited[element]+1;
      }
    }
    q.pop();
  }

}


int main()
{
  int x,y;
  ifstream in("bfs.in");
  ofstream out("bfs.out");
  in>>n>>m>>sursa;
  sursa--;
  graph.resize(n);
  visited.resize(n,-1);

  for(int i=0; i<m; i++)

  {
    in>>x>>y;
    x=x-1;
    y=y-1;
    graph[x].push_back(y);
  }


  BFS(sursa);
  for(int j=0; j<n; j++)
  {
    out<<visited[j]<<" ";
  }
  return 0;
}