Cod sursa(job #1418396)

Utilizator Liviu98Dinca Liviu Liviu98 Data 12 aprilie 2015 22:49:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <vector>
#include <queue>
#include <cstdio>
#include <stdio.h>
#include <string.h>
#include <fstream>
#define NMax 100001
using namespace std;
ifstream g("bfs.in");
ofstream f("bfs.out");

vector<int> V[NMax];
int d[NMax],N,M,S,a,b;
queue<int> Q;

void Citire()
{
    g>>N>>M>>S;
    for(int i=0;i<M;i++)
    {
        g>>a>>b;
        V[a].push_back(b);
    }
    for(int i=1;i<=N;i++)
        d[i]=-1;
}

void BFS()
{
    Q.push(S);
    d[S]=0;
    while(!Q.empty())
    {
        int nod=Q.front();
        Q.pop();
        for(int i=0;i<V[nod].size();i++)
            if(d[V[nod][i]]==-1)
            {
                d[V[nod][i]]=d[nod]+1;
                Q.push(V[nod][i]);
            }
    }
}

void Afisare()
{
    for(int i=1;i<=N;i++)
        f<<d[i]<<' ';
}

int main()
{
    Citire();
    BFS();
    Afisare();
}