Pagini recente » Cod sursa (job #1225365) | Cod sursa (job #199596) | Cod sursa (job #2528424) | Cod sursa (job #2350605) | Cod sursa (job #2137713)
#include <bits/stdc++.h>
#define Nmax 400009
using namespace std;
ifstream f ("apm.in");
ofstream g ("apm.out");
struct filip{
int x,y,c;
}v[Nmax];
bool cmp(int a,int b)
{
return v[a].c < v[b].c;
}
int l[Nmax / 2] , poz[Nmax] , y ,x,n,m,i,xx,yy,ct,c;
vector < int > vec;
inline int grupa(int x)
{
if(x == l[x])
return x;
l[x] = grupa(l[x]);
return l[x];
}
inline void uneste(int x,int y)
{
l[grupa(x)] = grupa(y);
}
int main()
{
f >> n >> m;
for(i = 1;i <= m;i++)
f >> v[i].x >> v[i].y >> v[i].c;
for(i = 1;i <= m;i++)
poz[i] = l[i] = i;
sort(poz + 1,poz + m + 1,cmp);
for(i = 1;i <= m;i++)
{
xx = grupa(v[poz[i]].x);
yy = grupa(v[poz[i]].y);
if(xx != yy)
{
ct += v[poz[i]].c;
uneste(xx,yy);
vec.push_back(poz[i]);
}
}
int l = vec.size();
g << ct << '\n' << l << '\n';
for(i = 0;i < l;i++)
g << v[vec[i]].x << " " << v[vec[i]].y << '\n';
return 0;
}