Cod sursa(job #1651165)

Utilizator azbe11Anonim azbe11 Data 12 martie 2016 15:10:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<iostream>
#include<fstream>
#include<queue>
#include<vector>
using namespace std;

vector<int> bfs(const vector<vector<int> > &graph,const int &v,const int &e,const int &s)
{
    vector<int> dis;
    dis.resize(v,-1);
    dis[s-1]=0;
    queue<int> q;
    int elem,i;
    q.push(s-1);
    while(!q.empty())
    {
        elem=q.front();
        for(i=0;i<graph[elem].size();i++)
        {
            if(dis[graph[elem][i]]==-1)
            {
                q.push(graph[elem][i]);
                dis[graph[elem][i]]=dis[elem]+1;
            }
        }
        q.pop();
    }
    return dis;
}

int main()
{
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    int v,e,s,i,aux1,aux2;
    vector<vector<int> > graph;
    vector<int> distance;
    fin>>v>>e>>s;
    graph.resize(v);
    for(i=0;i<e;i++)
    {
        fin>>aux1>>aux2;
        aux1--;
        aux2--;
        graph[aux1].push_back(aux2);
    }
    distance=bfs(graph,v,e,s);
    for(i=0;i<v;i++) fout<<distance[i]<<' ';
    return 0;
}