Cod sursa(job #363462)

Utilizator funkydvdIancu David Traian funkydvd Data 13 noiembrie 2009 14:18:34
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
#include<vector>
#include<deque>
#define N 100001
using namespace std;
vector<int> v[N];
int n,m,s,sol[N];
deque<int> q;
void bfs(int s)
{
	int e;
	sol[s]=1; 
	vector<int> ::iterator i;
	q.push_back(s);
	while (!q.empty())
	{
		e=q.front();
		for (i=v[e].begin(); i!=v[e].end(); i++)
			if (sol[*i]==0)
			{
				sol[*i]=1;
				q.push_back(*i);
			}
		q.pop_front();
	}
}
int main()
{
	freopen ("bfs.in", "r", stdin);
	freopen ("bfs.out", "w", stdout);
	int x,y,cnt=0;
	scanf ("%d %d", &n, &m);
	for (int k=1; k<=m; k++) 
	{
		scanf ("%d %d", &x, &y);
		v[x].push_back(y);
		v[y].push_back(x):
		
	}
	for (int k=1; k<=n; k++)
	{
		if (sol[k]==0) 
		{
			bfs(k);
			cnt++;
		}
	}
	printf ("%d", cnt);
	return 0;
}