Cod sursa(job #2050586)

Utilizator pibogaBogdan piboga Data 28 octombrie 2017 10:33:45
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
#include <queue>
#define mxvf 100002

using namespace std;

ifstream fin ("bfs.in");
ofstream fout("bfs.out");

vector <int> lst[mxvf];
vector <int>::iterator it;
queue <int> qu;

int nvf,nar,x,y,srs,crt,i,vsol[mxvf],val;
bool same;

int main()
{

    fin>>nvf>>nar>>srs;

    for(i=1;i<=nar;++i)
    {
        fin >> x >> y;
        if (x==y && x==srs)
        {
            same=1;
        }

        else lst[x].push_back(y);
    }

    qu.push(srs);
    //viz[srs]=1;

    while(!qu.empty())
    {
        crt=qu.front();
        for(it=lst[crt].begin();it!=lst[crt].end();++it)
        {
            val=*it;
            if(!vsol[val])
            {
                vsol[val]=vsol[crt]+1;
                qu.push(val);
            }
        }
        qu.pop();
    }

    for(i=1;i<=nvf;++i)
    {
        if(i==srs && same)
            fout<<0;
        else if(!vsol[i])
            fout<<-1;
        else
            fout<<vsol[i];
        fout<<' ';

    }

    return 0;
}