Cod sursa(job #2748889)

Utilizator paisieRusu Paisie paisie Data 3 mai 2021 22:24:33
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define forr(X) for(int i = 0; i<X; i++)
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")

int n, m;
vector <int> a[100005];
int vis[100005];

int dfs(int x){
	if(a[x][0]== -1) {
		vis[x] =1;
		return 0;
	}
	else if(vis[x] ==0){
		vis[x] = 1;
		for(int i=0; a[x][i] != -1; i++){
			//cout<<1;
			dfs(a[x][i]);
		}	
	}
	else return 0;
	
}

int main(){
	freopen("dfs.in", "r", stdin);
	freopen("dfs.out", "w", stdout);

	cin>>n>>m;
	int x, y;
	for(int i = 1; i <= m; i++){
		cin>>x>>y;
		a[x].push_back(y);
		a[y].push_back(x);
	}
	forr(n+1){
		a[i].push_back(-1);
	}
	//cout<<a[1][0]<<" "<<a[2][0]<<endl;
	
	int cnt = 0;
	//cout<<"cnt: ";
	for(int i =1; i<=n; i++){
		if(vis[i] == 0){
			cnt++;
			dfs(i);
			//cout<<cnt<<' ';
		}
	}
	cout<<cnt;
}