Pagini recente » Cod sursa (job #496098) | Cod sursa (job #1764673) | Cod sursa (job #2446117) | Cod sursa (job #2101360) | Cod sursa (job #405661)
Cod sursa(job #405661)
#include <cstdio>
#define f first
#define s second
#include <vector>
#include <algorithm>
using namespace std;
vector <pair <int, int> > sol;
vector <pair <int, pair<int, int> > > v;
int n, m, cost, t[200010];
int tata(int x)
{
if (x!=t[x]) t[x]=tata(t[x]);
return t[x];
}
int main()
{
freopen("apm.in","r",stdin);
freopen("apm.out","w",stdout);
scanf("%d %d",&n,&m);
int i, x, y, c;
for (i=1; i<=m; i++)
{
scanf("%d %d %d",&x,&y,&c);
v.push_back(make_pair(c,make_pair(x,y)));
}
sort(v.begin(), v.end());
for (i=1; i<=n; i++) t[i]=i;
int j;
for (i=0; i<m; i++)
{
x=tata(v[i].s.f);
y=tata(v[i].s.s);
if (x!=y)
{
cost +=v[i].f;
t[x]=y;
sol.push_back(make_pair(v[i].s.f, v[i].s.s));
}
}
printf("%d\n%d\n",cost,sol.size());
for (i=0; i<sol.size(); i++) printf("%d %d\n",sol[i].f,sol[i].s);
}