Cod sursa(job #1757958)

Utilizator trutruvasilicaHuhurez Marius trutruvasilica Data 16 septembrie 2016 10:14:17
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
queue<int>Q;
vector<int>A[100001];
int dist[100001],n,m,a,b,i,j,start;
void citire()
{
    fin>>n>>m>>start;
    for(i=1;i<=m;i++)
    {
        fin>>a>>b;
        A[a].push_back(b);
    }
}
void bfs(int start)
{
    Q.push(start);
    dist[start]=1;
    while(Q.size())
    {
        a=Q.front();
        for(vector<int>::iterator it=A[a].begin();it!=A[a].end();it++)
        {
            if(dist[*it]==0)
            {
                dist[*it]=dist[a]+1;
                Q.push(*it);
            }
        }
        Q.pop();
    }
}
void afisare()
{
    for(i=1;i<=n;i++)
    {
        if(dist[i]==0) fout<<"-1 ";
        else fout<<dist[i]-1<<" ";
    }
}
int main()
{
    citire();
    bfs(start);
    afisare();
}