Pagini recente » Cod sursa (job #1587136) | Cod sursa (job #1716029) | Cod sursa (job #1874001) | Cod sursa (job #771213) | Cod sursa (job #1681515)
#include <cstring>
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("dfs.in");
ofstream g("dfs.out");
#define MAXN 100005
#define g g
int N,M;
std::vector<int> G[MAXN];
int viz[MAXN];
void dfs(int node)
{
if (viz[node])
{
return;
}
viz[node] = 1;
for (int i = 0; i < G[node].size(); i++)
{
dfs(G[node][i]);
}
}
int main()
{
f >> N >> M;
for(int i=1; i<=M; i++)
{
int node1, node2;
f>>node1>>node2;
G[node1].push_back(node2);
G[node2].push_back(node1);
}
#if 0
for (int i = 1; i <= N; i++)
{
std::cout << i << ": ";
for (int j = 0; j < G[i].size(); j++)
{
std::cout << G[i][j] << ' ';
}
std::cout << std::endl;
}
std::cout << std::endl;
#endif
int cont = 0;
for (int i = 1; i <= N; i++)
{
if (viz[i] == 0)
{
dfs(i);
cont++;
}
}
g << cont << endl;
return(0);
}