Pagini recente » Cod sursa (job #2598420) | Cod sursa (job #2165935) | Cod sursa (job #542623) | Cod sursa (job #512407) | Cod sursa (job #640347)
Cod sursa(job #640347)
#include <fstream>
#include <algorithm>
#define NMAX 400002
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
int N,M,K,APM,T[NMAX>>1];
struct muchie{
int x,y,c;
}V[NMAX];
class cmp
{
public:
inline bool operator()(const muchie&a,const muchie&b){return a.c<b.c;}
};
int multime(int x)
{
if(!T[x])return x;
return multime(T[x]);
}
int main()
{
int i,m1,m2;
in>>N>>M;
for(i=0;i<M;i++)
in>>V[i].x>>V[i].y>>V[i].c;
//sortez muchiile crescator dupa cost
sort(V,V+M,cmp());
for(i=0;i<M;i++)
{
m1 = multime(V[i].x);
m2 = multime(V[i].y);
if(m1!=m2)
{
APM+=V[i].c,T[m2]=m1;
++K;
V[i].c = -NMAX;
}
}
out<<APM<<'\n'<<K<<'\n';
for(i=0;i<M;i++)
if(V[i].c==-NMAX)
out<<V[i].x<<' '<<V[i].y<<'\n';
return 0;
}