Pagini recente » Cod sursa (job #255723) | Cod sursa (job #2533910) | Cod sursa (job #1789601) | Cod sursa (job #2578873) | Cod sursa (job #410455)
Cod sursa(job #410455)
#include<fstream>
#define dmax2 400004
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
int n,m,nrm=0,mn,mx,cc[dmax2],apm[dmax2];
long long cost;
struct muchie
{ int p1;
int p2;
short int c;
} g[dmax2];
bool t[dmax2];
typedef int(*compfn)(const void *,const void *);
int sf(struct muchie *a,struct muchie *b)
{ return a->c - b->c;
}
int main()
{ int i,v1,v2,j;
in>>n>>m;
for(i=0;i<m;i++)
in>>g[i].p1>>g[i].p2>>g[i].c;
in.close();
for(i=1;i<=n;i++)
cc[i]=i;
qsort((void*)&g, m, sizeof(struct muchie), (compfn)sf);
for(i=0;nrm<n-1;i++)
{ v1=g[i].p1;
v2=g[i].p2;
if(cc[v1]!=cc[v2])
{ apm[nrm]=i;
cost+=g[i].c;
nrm++;
mn=min(cc[v1],cc[v2]);
mx=max(cc[v1],cc[v2]);
for(j=0;j<=n;j++)
if(cc[j]==mx)cc[j]=mn;
}
}
out<<cost<<'\n'<<n-1<<'\n';
for(i=0;i<nrm;i++)
out<<g[apm[i]].p1<<" "<<g[apm[i]].p2<<'\n';
out.close();
return 0;
}