Cod sursa(job #1703739)

Utilizator stoianmihailStoian Mihail stoianmihail Data 17 mai 2016 16:15:26
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using std::vector;

#define MAX_N 100000

int N, M;
vector <int> adj[MAX_N + 1];
bool seen[MAX_N + 1];

void dfs(int u) {
  seen[u] = 1;
  vector <int>::iterator it;
  for (it = adj[u].begin(); it != adj[u].end(); it++) {
    if (!seen[*it]) {
      dfs(*it);
    }
  }
}

int main(void) {
  int u, v;
  FILE *f = fopen("dfs.in", "r");

  fscanf(f, "%d %d", &N, &M);
  while (M) {
    fscanf(f, "%d %d", &u, &v);
    adj[u].push_back(v);
    adj[v].push_back(u);
    M--;
  }
  fclose(f);

  int count = 0;
  for (u = 1; u <= N; u++) {
    if (!seen[u]) {
      dfs(u);
      count++;
    }
  }

  freopen("dfs.out", "w", stdout);
  fprintf(stdout, "%d\n", count);
  fclose(stdout);

  /// Multumim Doamne!
  puts("Doamne ajuta!");
  return 0;
}