Pagini recente » Cod sursa (job #2503554) | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #679652) | Cod sursa (job #2313854)
#include<fstream>
#include<cstdlib>
using namespace std;
const int N=200001,M=400001;
int d[N],x[M],y[M],c[M],n,m,e,p[M],l[N],i,j;
int E(int x)
{
if(d[x]==x)
return x;
d[x]=E(d[x]);
return d[x];
}
void R(int x,int y)
{
d[E(x)]=E(y);
}
int F(const void *a,const void *b)
{
return c[*(int*)a]-c[*(int*)b];
}
int main()
{
ifstream f("apm.in");
ofstream g("apm.out");
for(f>>n>>m,i=0;i<m;i++)
f>>x[i]>>y[i]>>c[i],d[i]=p[i]=i;
qsort((void*)p,m,sizeof(p[0]),F);
for(i=0;i<m;i++)
if(E(x[p[i]])!=E(y[p[i]]))
e+=c[p[i]],R(x[p[i]],y[p[i]]),l[j++]=p[i];
g<<e<<'\n'<<n-1<<'\n';
for(i=0;i<n-1;++i)
g<<x[l[i]]<<' '<<y[l[i]]<<'\n';
}