Pagini recente » Cod sursa (job #811411) | Cod sursa (job #2977723) | Cod sursa (job #3165962) | Cod sursa (job #2542177) | Cod sursa (job #1088756)
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
ifstream f("amp.in");
ofstream g("apm.out");
int n,m,k,nr=0,cc[400001];
struct muchii
{
int e1,e2,cost,conex;
};
muchii v[400001];
bool cmp(muchii a,muchii b)
{
return a.cost<b.cost;
}
int main()
{ int i,x,y,val,c=0;
f>>n>>m;
for(i=1;i<=m;i++)
f>>v[i].e1>>v[i].e2>>v[i].cost;
sort(v+1,v+m+1,cmp);
for(i=1;i<=n;i++)cc[i]=i;
for(k=1;k<=m;k++)
{
x=v[k].e1;
y=v[k].e2;
if(cc[x]!=cc[y])
{
c+=v[k].cost;nr++;
// g<<x<<" "<<y<<'\n';
v[k].conex=1;
val=cc[y];//v[k].conex=cc[x];
for(i=1;i<=n;i++)
if(cc[i]==val)cc[i]=cc[x];
/* for(i=1;i<=m;i++)
if(v[i].conex==val)v[i].conex=cc[x];*/
}
//else v[k].conex=0;
}
g<<c<<'\n';
g<<nr<<'\n';
//g<<c<<'\n';
for(i=1;i<=m;i++)
{
if(v[i].conex)g<<v[i].e1<<" "<<v[i].e2<<'\n';
}
return 0;
}