Cod sursa(job #2606378)

Utilizator CosminBanicaBanica Cosmin CosminBanica Data 27 aprilie 2020 17:07:13
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <bits/stdc++.h>
using namespace std;
#define NMAX 100009

class Task {
  public:
    void solve() {
        read_input();
        print_output(get_result());
    }
    
  private:
    int n, m;
    int conex = 0;
    vector<int> adj[NMAX];

    void read_input() {
        ifstream fin("dfs.in");
        fin >> n >> m;

        for (int i = 1; i <= m; ++i) {
        int x, y;
        fin >> x >> y;

        adj[x].push_back(y);
        adj[y].push_back(x);
        }
        fin.close();
    }

    int get_result() {
        do_dfs();
        return conex;
    }

    void do_dfs() {
        vector<bool> visited(n + 1);

        for (int i = 1; i <= n; ++i) {
            if (!visited[i]) {
                ++conex;
                dfs(i, visited);
            }
        }
    }

    void dfs(int i, vector<bool> &visited) {
        visited[i] = 1;

        for (auto it : adj[i]) {
            if (!visited[it]) {
                dfs(it, visited);
            }
        }
    }

    void print_output(int result) { 
        ofstream fout("dfs.out");
        fout << result;
        fout.close();
    }
};

int main() {
    Task *task = new Task();
    task->solve();
    delete task;

    return 0;
}