Pagini recente » Borderou de evaluare (job #1569253) | Cod sursa (job #2292841) | Cod sursa (job #457622) | Cod sursa (job #1830604) | Cod sursa (job #1148271)
#include <fstream>
#include <vector>
#include <string.h>
using namespace std;
const int Nmax = 100005;
vector<int> G[Nmax];
int used[Nmax];
int component = 0;
void dfs(int a)
{
used[a] = component;
for (auto x: G[a])
{
if (!used[x])
dfs(x);
}
}
int main()
{
ifstream f ("dfs.in");
ofstream g ("dfs.out");
memset(used, 0, sizeof(used));
int N, M, a, b;
f >> N >> M;
for (int i = 0; i < M; i++)
{
f >> a >> b;
G[a].push_back(b);
G[b].push_back(a);
}
for (int i = 1; i <= N; i++)
{
if (!used[i])
{
component++;
dfs(i);
}
}
g << component << '\n';
return 0;
}