Cod sursa(job #1949233)

Utilizator vlcmodanModan Valentin vlcmodan Data 1 aprilie 2017 20:27:28
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<vector>

#define vect vector<vector<int>>
#define pb push_back
using namespace std;

int n, m;

void citire(vect &a)
{
	int x, y;

	scanf("%d %d", &n, &m);
	a.resize(n+1);
	
	for (int i = 0; i < m; i++)
	{
		scanf("%d %d", &x, &y);
		a[x].pb(y);
		a[y].pb(x);
	}
}

void dfs(vect &a, vector<int> &b, int current,int position)
{
	b[position] = current;
	for (int i = 0; i < a[i].size(); i++)
	{
		if (b[i] == 0)
			dfs(a, b, current, i);
	}
}
int solve(vect &a)
{
	vector<int>b(n+1);
	int current = 1;
	int number = 0;
	for (int i = 1; i <= m; i++) {

		if (b[i] == 0)
		{
			dfs(a, b, current,i);
			number++;
		}
	}

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

	

	vector<vector<int>>a;
	
	citire(a);
	
	printf("%d\n", solve(a));

	return 0;
}