Cod sursa(job #837839)

Utilizator UnforgivenMihai Catalin Botezatu Unforgiven Data 18 decembrie 2012 19:04:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <stdio.h>
#include <cstdlib>
#include <vector>
#define MAX_SIZE 100001

using namespace std;

vector <int> graf[MAX_SIZE];
int cost[MAX_SIZE];
int coada[MAX_SIZE];
int len = 0;
int N , M , S;

void BFS(int nod)
{
    for (int i = 0; i<= MAX_SIZE;i++)
    {
        cost[i] = -1;
    }
    len++;
    coada[len] = nod;
    cost[nod] = 0;
    int i = 1;
    while (i <= len)
    {
        for (int j = 0;j < graf[coada[i]].size();j++)
        {
            if ( cost[graf[coada[i]][j]] == -1)
            {
                len++;
                coada[len] = graf[coada[i]][j];
                cost[graf[coada[i]][j]] = cost[coada[i]] + 1;
            }
        }
        i++;
    }
}

int main()
{
    ifstream input("bfs.in");
    ofstream output("bfs.out");
    input >> N >> M >> S;
    for (int i = 0;i < M;i++)
    {
        int x , y;
        input >> x >> y;
        graf[x].push_back(y);

    }

    BFS(S);
    for (int i = 1;i<=N;i++)
    {
        output << cost[i] << " ";
    }
    input.close();
    output.close();

    return 0;
}