Cod sursa(job #2199199)

Utilizator benjamin2205Zeic Beniamin benjamin2205 Data 26 aprilie 2018 21:18:39
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include <bits/stdc++.h>

using namespace std;

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

vector <int> adiac[100005];
queue <int> coada;
int vizitat[100005];
int cost[100005];
int sizes[100005];

/// ///////////////////////////////////////////////////

int nNoduri;
int nMuchii;
int s;

void citire();
void afisareDistante() {
    for (int i = 1; i <= nNoduri; ++i) {
        g << cost[i] << ' ';
    }
}

void rezolvare() {
    int nCurent;

    coada.push(s);
    vizitat[s] = 1;
    cost[s] = 0;

    while(!coada.empty()) {
        nCurent = coada.front();
        coada.pop();

        for (int i = 0; i < adiac[nCurent].size(); ++i) {
            if (vizitat[adiac[nCurent][i]] == 0) {
                coada.push(adiac[nCurent][i]);
                vizitat[adiac[nCurent][i]] = 1;
                cost[adiac[nCurent][i]] = cost[nCurent] + 1;
            }
        }
//        coada.pop();
    }

    afisareDistante();
}

int main()
{
    citire();
    rezolvare();
    return 0;
}

void citire() {
    int pr, sec;

    f >> nNoduri >> nMuchii;

    f >> s;

    for (int i = 1; i <= nMuchii; ++i) {
        f >> pr >> sec;
        adiac[pr].push_back(sec);
    }

    for (int i = 1; i <= nNoduri; ++i) {
        sizes[i] = adiac[i].size();
    }

    for (int i = 1; i <= nNoduri; ++i) {
        cost[i] = -1;
    }
}