Pagini recente » Cod sursa (job #193341) | Cod sursa (job #2415508) | Cod sursa (job #2703065)
#include <fstream>
using namespace std;
ifstream fi("apm.in");
ofstream fo("apm.out");
int n,m,i,j,rez,t[200001],r;
struct muchie{int x,y,c;}v[400001];
int Radacina(int x)
{
if(x == t[x])
return x;
return t[x] = Radacina(t[x]);
}
void Unire(int x, int y)
{
t[x] = t[y];
}
int main()
{
fi >> n >> m;
for(i=1; i<=m; i++)
fi >> v[i].x >> v[i].y >> v[i].c;
for(i=1; i<m; i++)
for(j=i; j<=m; j++)
if(v[i].c > v[j].c)
swap(v[i],v[j]);
for(i=1; i<=n; i++)
t[i] = i;
for(i=1; i<=m; i++)
{
if(Radacina(v[i].x) != Radacina(v[i].y))
{
rez += v[i].c;
v[i].c = -1;
r++;
Unire(Radacina(v[i].x),Radacina(v[i].y));
}
}
fo << rez << '\n' << r << '\n';
for(i=1; i<=m; i++)
if(v[i].c == -1)
fo << v[i].x << " " << v[i].y << '\n';
return 0;
}