Pagini recente » Cod sursa (job #2941845) | Cod sursa (job #1750144) | Cod sursa (job #2596938) | Cod sursa (job #2778940) | Cod sursa (job #3201750)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
struct muchie
{
int x, y, c;
bool operator < (const muchie &alta) const
{
return c<alta.c;
}
};
int n, m, x, y, c, viz[201], cost;
vector <muchie> g, sol;
void uneste(int x, int y)
{
for(int i=1; i<=n; i++)
{
if(viz[i]==y)
{
viz[i]=x;
}
}
}
void kruskall()
{
int muchii=0;
for(int i=1; i<=n; i++)
{
viz[i]=i;
}
for(auto &e:g)
{
if(viz[e.x]!=viz[e.y])
{
uneste(viz[e.x], viz[e.y]);
muchii++;
cost+=e.c;
sol.push_back(e);
if(muchii==n-1)
{
break;
}
}
}
}
int main()
{
fin>>n>>m;
for(int i=1; i<=m; i++)
{
fin>>x>>y>>c;
g.push_back({x, y, c});
}
sort(g.begin(), g.end());
kruskall();
fout<<cost<<"\n";
fout<<sol.size()<<"\n";
for(auto &e:sol)
{
fout<<e.x<<" "<<e.y<<"\n";
}
return 0;
}