Cod sursa(job #1710818)

Utilizator alinaioanaAnghel Alina-Ioana alinaioana Data 29 mai 2016 20:31:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>

using namespace std;

vector < vector<int> > graph;
vector <bool> visited;
vector <int> cost;
int n,m;

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

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

        }
    q.pop();
    }

}

int main()
{
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    int s,x,y;
    f>>n>>m>>s;
    graph.resize(n);
    cost.resize(n,0);
    visited.resize(n,false);
    for(int i=0;i<m-1;i++)
    {
        f>>x>>y;
        x--;y--;
        graph[x].push_back(y);
    }

    BFS(s-1);
    for(int i=0;i<n;i++)
      {
         if(visited[i]==false) cost[i]=-1;
         g<<cost[i]<<" ";
      }

}