Cod sursa(job #2298637)

Utilizator Eduard24Eduard Scaueru Eduard24 Data 8 decembrie 2018 12:02:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

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

vector <int> l[100004];
queue <int> coada;
int n,viz[100004],s,i,x,y,m,nod,j,nrviz[100004];

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

void bfs(int nod_start)
{
    int i;
    for(i=1;i<=n;i++)
    {
        viz[i]=0;
    }
    coada.push(nod_start);
    viz[nod_start]=1;

    while(!coada.empty())
    {
        nod=coada.front();
        for(i=0;i<l[nod].size();i++)
        {
            j=l[nod][i];
            if(viz[j]==0)
            {
                coada.push(j);
                viz[j]=1;
                nrviz[j]=nrviz[nod]+1;
            }
        }
        coada.pop();
    }
}

int main()
{
    fin>>n>>m>>s;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        l[x].push_back(y);
        ///l[y].push_back(x);
    }
    bfs(s);
    for(i=1;i<=n;i++)
    {
        if(i!=s && nrviz[i]==0)
        {
            fout<<-1<<" ";
        }
        else
        {
            fout<<nrviz[i]<<" ";
        }
    }
    return 0;
}