Pagini recente » Cod sursa (job #3185744) | Cod sursa (job #412263) | Cod sursa (job #2800114) | Cod sursa (job #160618) | Cod sursa (job #2779725)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
int n,m;
int p[105],x[105],y[105],c[105],r[105],ans[105],k,cost;
int root(int v)
{
if(r[v]!=v)
r[v]=root(r[v]);
return r[v];
}
void unite(int x,int y)
{
int r1=root(x),r2=root(y);
if(r1!=r2)
r[r1]=r2;
}
bool cmp(int i,int j)
{
return c[i]<c[j];
}
int main()
{
fin>>n>>m;
int i;
for(i=1; i<=m; i++)
{
fin>>x[i]>>y[i]>>c[i];
p[i]=i;
}
for(i=1; i<=n; i++)
r[i]=i;
sort(p+1,p+m+1,cmp);
for(i=1; i<=m; i++)
{
int rx=root(x[p[i]]),ry=root(y[p[i]]);
if(rx!=ry)
{
unite(rx,ry);
cost+=c[p[i]];
ans[++k]=p[i];
}
}
fout<<cost<<"\n"<<n-1<<"\n";
for(i=1; i<=k; i++)
fout<<x[ans[i]]<<" "<<y[ans[i]]<<"\n";
return 0;
}