Pagini recente » Cod sursa (job #2489457) | Cod sursa (job #1299036) | Cod sursa (job #2342144) | Cod sursa (job #643126) | Cod sursa (job #342347)
Cod sursa(job #342347)
#include<fstream>
#define dmax 200003
#define mmax 400003
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
int n,m,c[dmax],apm[dmax],nrm=1,cm;
struct m
{ int p1;
int p2;
int c;
} g[mmax];
typedef int (*compfn)(const void *,const void *);
int sf(struct m *a,struct m *b)
{ return ( a->c - b->c);
}
int main()
{ int i,bun,rau,j;
in>>n>>m;
for(i=0;i<m;i++)
in>>g[i].p1>>g[i].p2>>g[i].c;
in.close();
qsort((void*)&g,m,sizeof(struct m),(compfn)sf);
for(i=1;i<=n;i++)
c[i]=i;
for(i=0;nrm<=n-1;i++)
{ if(c[g[i].p1]!=c[g[i].p2])
{ cm+=g[i].c;
apm[nrm]=i;
nrm++;
bun=min(c[g[i].p1],c[g[i].p2]);
rau=max(c[g[i].p1],c[g[i].p2]);
for(j=1;j<=n;j++)
if(c[j]==rau)c[j]=bun;
}
}
out<<cm<<'\n'<<nrm-1<<'\n';
for(i=1;i<=nrm-1;i++)
out<<g[apm[i]].p1<<" "<<g[apm[i]].p2<<'\n';
out.close();
return 0;
}