Cod sursa(job #766415)

Utilizator iris88Nagy Aliz iris88 Data 11 iulie 2012 12:06:46
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
vector<bool> visited;
vector<vector<int> > adj;
int count;
void dfs_visit(int i)
{
	visited[i]=true;
	for (int j=0;j<adj[i].size();j++)
	{
			if (!visited[adj[i][j]])
				dfs_visit(adj[i][j]);
	}
}
void dfs(int n)
{
	for (int i=1;i<=n;i++)
	{
		if (!visited[i])
		{
			count++;
			dfs_visit(i);
		}
	}
}
int main()
{
	FILE *f = fopen("dfs.in","r");
	FILE *g = fopen("dfs.out","w+");
	int n,m;
	fscanf(f,"%d %d",&n,&m);
	adj.resize(n+1);
	visited.resize(n+1);
	for (int i=0;i<=n;i++)
		visited[i]= false;
	for (int i=0;i<m;i++)
	{
		int a,b;
		fscanf(f,"%d %d", &a,&b);
		adj[a].push_back(b);
		adj[b].push_back(a);
	}
	count=0;
	dfs(n);
	fprintf(g,"%d\n",count);
	fclose(f);
	fclose(g);
}