Cod sursa(job #3312733)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 29 septembrie 2025 18:21:40
Problema Parcurgere DFS - componente conexe Scor 15
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

void dfs(int const u, vector<bool>& vis, vector<vector<int>> const& G) {
  vis[u] = true;
  for (int const v : G[u]) {
    if (!vis[v]) {
      dfs(v, vis, G);
    }
  }
}

int main() {
#ifndef LOCAL
  freopen("dfs.in", "r", stdin);
  freopen("dfs.out", "w", stdout);
#endif
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int N;
  int M;
  cin >> N >> M;
  vector<vector<int>> G(N);
  for (; M--;) {
    int X;
    int Y;
    cin >> X >> Y;
    --X;
    --Y;
    G[X].push_back(Y);
  }
  int cc = 0;
  vector<bool> vis(N, false);
  for (int i = 0; i < N; ++i) {
    if (!vis[i]) {
      ++cc;
      dfs(i, vis, G);
    }
  }
  cout << cc << endl;
  return 0;
}