Cod sursa(job #1181872)

Utilizator toncuvasileToncu Vasile toncuvasile Data 4 mai 2014 01:12:28
Problema Parcurgere DFS - componente conexe Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 kb
//Arbore partial de cost minim. Algoritmul Kruskal.
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;

int A[10005][10005], viz[10005];
int n,m;

	ifstream f("dfs.in");  //apm.in
	ofstream g("dfs.out");

void Read()
{
	int x,y;
	f >> n >> m;
	for(int i=1; i<=m; i++){
		f >> x >> y;
		A[x][y]=A[y][x]=1;
	}
	for(int i=1;i<=n;i++){
		A[i][i]=1;
	}
}

void DFS(int i)
{
	viz[i]=1;
	for(int j=1;j<=n;j++){
		if(A[i][j] && !viz[j]){
			DFS(j);
		}
	}
}

int main()
{
	Read();
	int ct=0;
	for(int i=1;i<=n;i++){
		if(!viz[i]){
			ct++;
			DFS(i);
		}
	}
	g << ct;
	return 0;
}






/*
//Arbore partial de cost minim. Algoritmul Kruskal.
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;

vector <int> L [100005];
int n,m;

void DFS(int i)
{
	if(L[i][0]==-1) return;
	int x=L[i][0];
	L[i][0]=-1;
	DFS(x);
	for(int j=1;j<L[i].size();j++){
		DFS(L[i][j]);
	}
}

int main()
{
	ifstream f("dfs.in");  //apm.in
	ofstream g("dfs.out");

	f >> n >> m;
	int x,y;
	for(int i=1;i<=m;i++){
		f >> x >> y;
		L[x].push_back(y);
		L[y].push_back(x);
	}

	

	int ct=0;
	
	for(int i=1;i<=n;i++){
		if(L[i].size()==0){
			ct++;
		}else if(L[i][0]!=-1){
				  ct++;
				  DFS(i);
			  }
	}
	
	g << ct;
	return 0;
}


*/