Cod sursa(job #1981788)

Utilizator dragos231456Neghina Dragos dragos231456 Data 16 mai 2017 19:39:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> vecini[100005];
deque<int> q;
int n,m,x,cost[100005],deparcurs[100005],start,a,b;

void bfs(int x)
{
    for(int i=1;i<=n;++i) cost[i]=-1;
    cost[x]=0;
    q.push_front(x);
    while(!q.empty())
    {
        start=q.front();
        q.pop_front();
        for(int i=0;i<deparcurs[start];++i)
        {
            if(cost[vecini[start][i]]==-1)
            {
                cost[vecini[start][i]]=cost[start]+1;
                q.push_back(vecini[start][i]);
            }
        }
    }
}

int main()
{
    f>>n>>m>>x;
    for(int i=1;i<=m;++i)
    {
        f>>a>>b;
        vecini[a].push_back(b);
    }
    for(int i=1;i<=n;++i)
    {
        deparcurs[i]=vecini[i].size();
    }
    bfs(x);
    for(int i=1;i<=n;++i)
    {
        g<<cost[i]<<' ';
    }
    return 0;
}