Pagini recente » Cod sursa (job #70661) | Cod sursa (job #1010539) | Cod sursa (job #700466) | Cod sursa (job #1115384) | Cod sursa (job #2955127)
#include <fstream>
#include <vector>
#include <stack>
void DFS(int u,std::vector<std::vector<int>> g, std::vector<bool>& visited) {
std::stack<int> s;
s.push(u);
visited[u] = true;
while (!s.empty()) {
int u = s.top();
s.pop();
for (int v : g[u]) {
if (!visited[v]) {
visited[v] = true;
s.push(v);
}
}
}
}
int main() {
std::ifstream fin("dfs.in");
std::ofstream fout("dfs.out");
int n, m;
fin >> n >> m;
std::vector<std::vector<int>> g(n+1);
std::vector<bool> visited(n + 1, false);
for (int i = 1; i <= m; i++) {
int u, v;
fin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (!visited[i]) {
cnt++;
DFS(i,g,visited);
}
}
fout << cnt;
return 0;
}