Cod sursa(job #2171505)

Utilizator Andreea_1009Cimpean Andreea Andreea_1009 Data 15 martie 2018 12:34:17
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector <int> a[100005];

int n,m,s,viz[100005],d[100005];

void citire_graf()
{
    f>>n>>m>>s;
    int x,y;
    for(int i=1;i<=m;++i)
    {
        f>>x>>y;
        a[x].push_back(y);
    }
}

void parcurgere_latime(int s)
{
    int coada[100005];
    int prim,ultim;
    viz[s]=0;
    prim=ultim=1;
    coada[prim]=s;
    while(prim<=ultim)
    {
        int nod=coada[prim];
        //cout<<nod<<' ';
        for(int i=0;i<d[nod];++i)
        {
            if(viz[a[nod][i]]==-1)
            {
                viz[a[nod][i]]=viz[nod]+1;
                ultim++;
                coada[ultim]=a[nod][i];
            }
        }
        prim++;
    }
}

int main()
{
    citire_graf();
    for(int i=1;i<=n;++i)
        viz[i]=-1;
    for(int i=1;i<=n;++i)
        d[i]=a[i].size();
    parcurgere_latime(s);
    for(int i=1;i<=n;++i)
        g<<viz[i]<<' ';
    return 0;
}