Pagini recente » Cod sursa (job #1802) | Cod sursa (job #156365) | Cod sursa (job #559903) | Cod sursa (job #2226408) | Cod sursa (job #825188)
Cod sursa(job #825188)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <cmath>
#include <iomanip>
#include <string>
#include <cstring>
#include <deque>
#include <stack>
#include <bitset>
#include <list>
#define pb push_back
#define pf push_front
#define pob pop_back
#define pof pop_front
#define mp(a,b) make_pair (a, b)
#define ll long long
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)
using namespace std;
int N, M;
vector <int> muchii[100010];
int lg[100010];
bitset <100010> visited;
void Citire ()
{
ifstream fin ("dfs.in");
fin >> N >> M;
for (int i = 0, a, b; i < M; i++)
{
fin >> a >> b;
muchii[a].pb (b);
lg[a]++;
muchii[b].pb (a);
lg[b]++;
}
fin.close ();
}
void DFS (int nod)
{
visited[nod] = 1;
for (int i = 0; i < lg[nod]; i++)
{
if (!visited[muchii[nod][i]]) DFS (muchii[nod][i]);
}
}
int Business ()
{
int cnt = 0;
for (int i = 1; i <= N; i++)
if (!visited[i])
{
cnt++;
DFS (i);
}
return cnt;
}
void Scriere ()
{
ofstream fout ("dfs.out");
fout << Business ();
fout.close ();
}
int main ()
{
Citire ();
Scriere ();
return 0;
}