Pagini recente » Cod sursa (job #849773) | Cod sursa (job #945221) | Cod sursa (job #3336407) | Cod sursa (job #711595) | Cod sursa (job #3334941)
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
const int NMAX = 100000; // nr maxim din restrictii
vector<int> adj[NMAX + 1]; // lista de adiacenta
vector<bool> visited;
int N;
int M;
int compConex = 0;
void readInput() {
ifstream f("dfs.in");
f >> N >> M;
for (int i = 1; i <= M; i++) {
int u, v;
f >> u >> v;
adj[u].push_back(v); // orientat
adj[v].push_back(u); // neorientat
}
f.close();
// alte inputuri din porblema
visited = vector(N + 1, false);
}
// alte functii pentru rezolvarea problemei
void dfs(int start) {
visited[start] = true;
for (auto j : adj[start]) {
if (visited[j] == false) {
visited[j] = true;
dfs(j);
}
}
}
void output() {
// afisare rezultate
ofstream g("dfs.out");
g << compConex;
g.close();
}
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
readInput();
for (int i = 1; i <= N; i++) {
if (visited[i] == false) {
dfs(i);
compConex ++;
}
}
output();
return 0;
}