Pagini recente » Cod sursa (job #2028211) | Cod sursa (job #295620) | Cod sursa (job #744594) | Cod sursa (job #2406976) | Cod sursa (job #408656)
Cod sursa(job #408656)
#include<cstdio>
#define MAX 200005
#include <algorithm>
#include<vector>
#include<fstream>
using namespace std;
struct muchie{
int i,j,c;
friend bool operator <(const muchie a, const muchie b)
{
return a.c<b.c;
}
};
muchie v[400005];
int n,m,a[MAX],t[MAX],h[MAX],na;
int radacina(int x)
{
int y=x,tmp;
while(t[x]!=0)//gasesc radacina;
x=t[x];
while(t[y])
tmp=t[y],t[y]=x,y=tmp;//la toate muchiile pana la radacina ii dau tatal radacina;
return x;
}
int main()
{
int i,s=0;
ifstream fin("apm.in");
fin>>n>>m;
for(i=1;i<=m;i++)
fin>>v[i].i>>v[i].j>>v[i].c;
sort(v+1,v+m+1);
for(i=1;i<=m;i++)
{
int ri=radacina(v[i].i),rj=radacina(v[i].j);
if(ri!=rj)
{
a[++na]=i;
if(h[ri]<h[rj])
t[ri]=rj;
else if(h[rj]<h[ri])
t[rj]=ri;
else
t[ri]=rj,h[rj]++;
}
}
for(i=1;i<=na;i++)
s+=v[a[i]].c;
ofstream fout("apm.out");
fout<<s<<"\n"<<na<<"\n";
for(i=1;i<=na;i++)
fout<<v[a[i]].i<<" "<<v[a[i]].j<<"\n";
return 0;
}