Cod sursa(job #2425240)

Utilizator alex_galatanAlex Galatan alex_galatan Data 24 mai 2019 17:15:06
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

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

struct nod{
    int nr, ordin, vizitat;
    vector <int> legaturi;
};

int parcurge(int i, int n, vector<nod> noduri)
{
    int j, total = 1;

    if (noduri[i].vizitat == 1)
        return 0;
    noduri[i].vizitat = 1;

    for (j = 0; j < noduri[i].legaturi.size(); j++)
        if (noduri[noduri[i].legaturi[j] - 1].vizitat == 0)
            total+= parcurge(noduri[i].legaturi[j] - 1, n, noduri);

    return total;
}

int main()
{
    vector<nod> noduri;
    int n, m, i, a, b;

    f>>n>>m;
    for (i = 0; i  < n; i++)
    {
        nod nou;
        nou.nr = i + 1;
        nou.ordin = 0;
        nou.vizitat = 0;
        noduri.push_back(nou);
    }

    for (i = 0; i < m; i++)
    {
        f>>a>>b;
        //noduri[b-1].ordin++;
        noduri[b-1].legaturi.push_back(a);
        noduri[a-1].legaturi.push_back(b);
    }

    int con = 0;
    for(i = 0; i < m; i++)
        if (parcurge(i, n, noduri) > 0)
            con++;

    cout<<con;

    return 0;
}