Pagini recente » Cod sursa (job #686535) | Cod sursa (job #1845789) | Cod sursa (job #2867670) | Cod sursa (job #273244) | Cod sursa (job #2283730)
#include <bits/stdc++.h>
#define dm 400002
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
struct nod{
int x;
int y;
int cost;
};
int n, m, i, p[dm/2], s;
vector <nod> vv;
nod v[dm];
int cmp(nod a, nod b)
{
return a.cost<b.cost;
}
int parinte(int x)
{
if(p[x]==x)
return p[x];
else
return p[x]=parinte(p[x]);
}
void ad(int x, int y)
{
p[parinte(x)]=p[parinte(y)];
}
int main()
{
f>>n>>m;
for(i=1; i<=m; i++)
{
f>>v[i].x>>v[i].y>>v[i].cost;
}
sort(v+1, v+m+1, cmp);
// for(i=1; i<=m; i++)
// {
// cout<<v[i].x<<' '<<v[i].y<<' '<<v[i].cost<<'\n';
// }
for(i=1; i<=n; i++)
p[i]=i;
///vv.push_back({v[1].x, v[1].y, v[1].cost});
for(i=1; i<=m; i++)
{
if(parinte(v[i].y)!=parinte(v[i].x))
{
vv.push_back({v[i].x, v[i].y, v[i].cost});
p[parinte(v[i].x)]=parinte(v[i].y);
s+=v[i].cost;
}
}
g<<s<<'\n';
g<<n-1<<'\n';
for(i=0; i<vv.size(); i++)
{
g<<vv[i].x<<' '<<vv[i].y<<'\n';
}
return 0;
}