Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1096937) | Cod sursa (job #1372732) | Cod sursa (job #2403244)
//ALEX ENACHE
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>
using namespace std;
//#include <iostream>
#include <fstream>
ifstream cin ("dfs.in");ofstream cout ("dfs.out");
vector < int > gr[100100];
bool used[100100];
void dfs(int nod){
used[nod] = true;
for (auto x : gr[nod]){
//x = gr[nod][i]
if (!used[x]){
dfs(x);
}
}
}
int main() {
//freopen("input", "r", stdin);freopen("output", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cout << setprecision(10) << fixed;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
srand(time(NULL));
//citesc datele
int noduri , muchii;
cin>>noduri>>muchii;
//citesc muchiile
for (int i=1; i<=muchii; i++){
int x , y;
cin>>x>>y;
//trag muchie
gr[x].push_back(y);
gr[y].push_back(x);
}
int cont = 0;
for (int sursa=1; sursa<=noduri; sursa++){
if (used[sursa]){
continue;
}
cont++;
dfs(sursa);
}
//afisez nr de componente conexe
cout<<cont;
return 0;
}