Cod sursa(job #1696807)

Utilizator serban_andreiserban andrei-catalin serban_andrei Data 29 aprilie 2016 22:28:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
# include <bits/stdc++.h>

using namespace std;

#define dimax 100010
#define valmax 1000000

int distanta[dimax];

vector <int> a[dimax];

queue <int>coada;

int n,m,i,x,y,start;

int main ()
{

    ifstream f("bfs.in");
    ofstream g("bfs.out");

    f>>n>>m>>start;

    while(i<=m)
    {
        f>>x>>y;
        a[x].push_back(y);
        ++i;
    }

    for(i=1;i<=n;i++)
        distanta[i]=dimax;

    distanta[start]=0;

    coada.push(start);

    while(coada.empty()==0)
    {
        int nod=coada.front();
        coada.pop();
        for(auto vecin:a[nod])
        {
            if(distanta[vecin]>distanta[nod]+1)
            {
                distanta[vecin]=distanta[nod]+1;
                coada.push(vecin);
            }

        }
    }

    for(i=1;i<=n;++i)
    {
        if(distanta[i]==dimax)
            g<<-1<<" ";
        else g<<distanta[i]<<" ";
    }
    return 0;
}