Pagini recente » Istoria paginii runda/prega_oji2015_vi_2 | Arhiva de probleme | Monitorul de evaluare | Profil Djok | Cod sursa (job #850631)
Cod sursa(job #850631)
#include <cstdio>
#include <vector>
using namespace std;
#define maxN 100010
#define PB push_back
vector <int> list[maxN];
bool mark[maxN];
void DFS (int nod)
{
mark[nod] = true;
for (int i = 0; i < list[nod].size(); ++ i)
{
if (mark[list[nod][i]]) continue;
DFS (list[nod][i]);
}
}
int main()
{
freopen ("dfs.in", "r", stdin);
freopen ("dfs.out", "w", stdout);
int N, M, sol = 0;
scanf ("%d %d", &N, &M);
while (M --)
{
int x, y;
scanf ("%d %d", &x, &y);
list[x].PB (y);
list[y].PB (x);
}
for (int i = 1; i <= N; ++ i)
{
if (mark[i]) continue;
DFS (i);
++ sol;
}
printf ("%d", sol);
return 0;
}