Cod sursa(job #999258)

Utilizator muresan_bogdanMuresan Bogdan muresan_bogdan Data 19 septembrie 2013 18:55:58
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;

ifstream fin("dfs.in");
ofstream fout("dfs.out");

struct nod {
    bool vizitat;
    vector<int> vecini;
};

int m, n, i, nr, a, b;
nod nodes[100002];

void fill(int x) {
    int l, j;
    nodes[x].vizitat = true;
    l = nodes[x].vecini.size();
    for(j = 0; j < l; j++) {
        int vecin = nodes[x].vecini[j];
        if(nodes[vecin].vizitat == false) {
            fill(vecin);
        }
    }
}

int main() {
    fin >> n >> m;
    for(i = 0; i < m; i++) {
        fin >> a >> b;
        nodes[a].vecini.push_back(b);
        nodes[b].vecini.push_back(a);
    }
    for(i = 1; i <= n; i++) {
        if(nodes[i].vizitat == false) {
            fill(i);
            nr++;
        }
    }
    fout << nr;
    fin.close();
    fout.close();
    return 0;
}