Cod sursa(job #2325694)

Utilizator andrei13Paval Andrei andrei13 Data 22 ianuarie 2019 20:40:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <list>

using namespace std;

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

int m,n,s;
list <int> adj[100001];
bool viz[100001];
int coada[100001];
int niv[100001];

void bfs(int start)
{
    int sf,inc;
    sf=inc=1;
    coada[1]=start;
    viz[start]=true;
    while(inc<=sf)
    {
        int nc=coada[inc];
        list <int> :: iterator it;
        for(it=adj[nc].begin();it!=adj[nc].end();++it)
        if(!viz[*it])
        {
            viz[*it]=true;
            niv[*it]=niv[nc]+1;
            coada[++sf]=*it;
        }
        ++inc;
    }
}

int main()
{
    f>>n>>m>>s;
    for(int i=1;i<=m;++i)
    {
        int x,y;
        f>>x>>y;
        adj[x].push_back(y);
    }
    bfs(s);
    for(int i=1;i<=n;++i)
    if(niv[i] or i==s)
    g<<niv[i]<<' ';
    else g<<-1<<' ';

   return 0;
}