Cod sursa(job #1725716)

Utilizator Andrei_PopaAndreiCDG Andrei_Popa Data 6 iulie 2016 12:06:12
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <queue>




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

queue<int> Conex[100001];
int sursa;
int nrNoduri;
int nrMuchii;

bool viz[100001];
int cost[100001];///costul minim ca sa ajungi intr-un nod

void citire()
{
    f>>nrNoduri;
    f>>nrMuchii;
    f>>sursa;

    int i;
    int a,b;

    for(i=1;i<=nrMuchii;i++)
    {
        f>>a>>b;
        Conex[a].push(b);
    }

}
void bfs(int nod,int val)
{
    while(!Conex[nod].empty())
    {
        int x= Conex[nod].front();


        if((viz[x]==false)||(viz[x]==true && cost[x]>val))
        {
            viz[x]=true;
            cost[x]=val;
            bfs(x,val+1);
        }
        Conex[nod].pop();
    }

}
void afisare()
{
    int i;
    for(i=1;i<=nrNoduri;i++)
    if(viz[i]==true)
    g<<cost[i]<<' ';
    else
    g<<"-1"<<' ';
}

int main()
{

    citire();
    viz[sursa]=true;
    bfs(sursa,1);

   afisare();

    f.close();
    g.close();
    return 0;
}