Pagini recente » Diferente pentru runda/temadivizori9_17_10 intre reviziile 2 si 4 | Profil Stefan101 | Cod sursa (job #498328) | Rating Avram Andrei (trihard) | Cod sursa (job #1915897)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("f.in");
ofstream g("f.out");
int n,m,i,k,ct,arb[200001],j,nr;
struct vect
{
int q,w;
}e[20001];
struct muchie
{
int x,y;
float cost;
} a[200001],t;
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
f>>a[i].x>>a[i].y>>a[i].cost;
for(i=1;i<=n;i++)
arb[i]=i;
for(i=1;i<=m-1;i++)
for(j=i+1;j<=m;j++)
if(a[i].cost>a[j].cost)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
k=0;
ct=0;
i=1;
while(k<n-1)
{
if(arb[a[i].x]!=arb[a[i].y])
{
k++;
ct=ct+a[i].cost;
for(j=1;j<=n;j++)
if(arb[j]==arb[a[i].x])
{
arb[j]=arb[a[i].y];
}
nr++;
e[nr].q=a[i].x;
e[nr].w=a[i].y;
}
i++;
}
g<<ct<<'\n'<<nr<<'\n';
for(i=1;i<=nr;i++)
g<<e[i].q<<" "<<e[i].w<<'\n';
f.close();
g.close();
return 0;
}