Cod sursa(job #2008497)

Utilizator andreistanStan Andrei andreistan Data 6 august 2017 17:45:55
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");
int N,M,S,a[10001][10001], viz[10001],cost[10001];

//BFS latime

void citiregraf()
{
    f >> N >> M >> S;
    int x, y;
    while(f >> x >> y)
        a[x][y] = 1;
}

void afis()
{
    for(int i = 1; i <= N; i++)
        if(cost[i]==0 && i!=S)
            g<<"-1 ";
        else
            g<<cost[i]<<' ';
}

void latime(int x)
{
    int i, j, p, u, cr, c[10001];
    p = u = 1;
    c[u] = x;
    viz[x] = 1;
    while(p <= u)
    {
        cr = c[p++];
        for(j = 1; j <= N; j++)
            if(a[cr][j] == 1 && viz[j] == 0)
            {
                c[++u] = j;
                viz[j] = 1;
                //cout << j << ' ';
                cost[j]=cost[cr]+1;
            }
    }
}

int main()
{
    citiregraf();
    latime(S);
    afis();

    return 0;
}