Cod sursa(job #2083176)

Utilizator serjiuuAvacaritei Sergiu serjiuu Data 7 decembrie 2017 09:42:36
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int nmax=100001;
list<int>g[nmax];
bitset<nmax>viz;
int n,m,nod_start,cost[nmax];
void Read()
{
    int x,y;
    fin>>n>>m>>nod_start;
    while(fin>>x>>y)
        g[x].push_back(y);
}
void Print()
{
    int i;
    for(i=1;i<=n;i++)
        fout<<cost[i]<<' ';
}
void BFS()
{
    int nod,i;
    cost[nod_start]=0;
    viz[nod_start]=1;
    deque<int>d;
    list<int>::iterator it;
    d.push_back(nod_start);
    while(!d.empty())
    {
        nod=d.front();
        for(it=g[nod].begin();it!=g[nod].end();it++)
            if(!viz[*it])
            {
                cost[*it]=cost[nod]+1;
                viz[*it]=1;
                d.push_back(*it);

            }
        d.pop_front();
    }
    for(i=1;i<=n;i++)
        if(cost[i]==0)
            cost[i]=-1;
    cost[nod_start]=0;
}
int main()
{
    Read();
    BFS();
    Print();
    return 0;
}