Cod sursa(job #2763183)

Utilizator tigaieNedelcu Ioan-Andrei tigaie Data 12 iulie 2021 11:04:48
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#define FOR(i , n) for(int i = 0 ; i < (n) ; i++)
#define apare printf("apare");
#define endl "\n"
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int , int> pii;
////==================================================
const int inf = INT_MAX;
vector<bool> visited(100100 , false);
vector<int> adj[100100];

void dfs(int node){
    if(visited[node])return;
    visited[node] = true;
    for(auto it : adj[node]){
        dfs(it);
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    freopen("dfs.in" , "r" , stdin);
    freopen("dfs.out" , "w" , stdout);
    int n , m;
    cin >> n >> m;
    int n1 , n2;
    FOR(i , m){
        cin >> n1 >> n2;
        adj[n1].push_back(n2);
        adj[n2].push_back(n1);
    }
    int ret = 0;
    for(int i = 1 ; i <= n ; i++){
        if(!visited[i]){
            ret++;
            dfs(i);
        }
    }
    cout << ret;
    return 0x0;
}