Cod sursa(job #2322639)

Utilizator Alida_Jucuti_FMI_UVTJucuti Alida Alida_Jucuti_FMI_UVT Data 17 ianuarie 2019 23:34:56
Problema Arbore partial de cost minim Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include<iostream>
#include<fstream>
#include<algorithm>

using namespace std;

ifstream fin("apm.in");
ofstream fout("apm.out");

struct arbore
{
	int X,Y,C;
} a[400001];

int N,M,nr=0,v1[400001],v2[400001];

int compara(arbore a,arbore b)
{
	return a.C<b.C;
}
int det(int x)
{
	int aux,r;
	r=x;
	while(v2[r]!=r)
		r=v2[r];
	while(v2[x]!=x)
	{
		aux=v2[x];
		v2[x]=r;
		x=aux;
	}
	return r;
}

int main()
{
	fin>>N>>M;
	for(int i=1;i<=M;i++)
		fin>>a[i].X>>a[i].Y>>a[i].C;
	for(int i=1;i<=N;i++)
		v2[i]=i;
	sort(a+1,a+M+1,compara);
	int m1,m2,cmin=0;
	for(int i=1;i<=M&&nr<N-1;i++)
	{
		m1=det(a[i].X);
		m2=det(a[i].Y);
		if(m1!=m2)
		{
			cmin+=a[i].C;
			v1[++nr]=i;
			v2[m1]=m2;
		}
	}
	fout<<cmin<<"\n"<<nr<<"\n";
	for(int i=1;i<=nr;i++)
		fout<<a[v1[i]].Y<<" "<<a[v1[i]].X<<"\n";
	return 0;
}