Pagini recente » Cod sursa (job #1311534) | Cod sursa (job #914033) | Cod sursa (job #2731242) | Cod sursa (job #197682) | Cod sursa (job #2115552)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
int n,m,i,j,nr,t[200007],rezultat[200007],min1,max1,s;
struct muchie
{
int x;
int y;
int cost;
} v[400007];
bool sortare(muchie A,muchie B)
{
return A.cost<B.cost;
}
int main()
{
f>>n>>m;
for(i=1; i<=m; i++)
f>>v[i].x>>v[i].y>>v[i].cost;
sort(v+1,v+m+1,sortare);
for(i=1; i<=n; i++)
t[i]=i;
for(i=1; i<=m; i++)
{
if(nr<n-1)
{
if(t[v[i].x]!=t[v[i].y])
{
min1=min(t[v[i].x],t[v[i].y]);
max1=max(t[v[i].x],t[v[i].y]);
for(j=1; j<=n; j++)
{
if(t[j]==max1)
t[j]=min1;
}
nr++;
rezultat[nr]=i;
}
}
else
break;
}
for(i=1;i<n;i++)
s=s+v[rezultat[i]].cost;
g<<s<<'\n';
g<<n-1<<'\n';
for(i=1;i<n;i++)
g<<v[rezultat[i]].x<<' '<<v[rezultat[i]].y<<'\n';
return 0;
}