Pagini recente » Cod sursa (job #2172396) | Cod sursa (job #1315337) | Cod sursa (job #99644) | Cod sursa (job #2870223) | Cod sursa (job #965240)
Cod sursa(job #965240)
#include <algorithm>
#include <fstream>
#include <vector>
#define N 200005
#define a second.first
#define b second.second
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
typedef pair <int, int> muchie;
typedef pair <int, muchie> arb;
vector <arb> graf;
vector <muchie> sol;
vector <int> c(N);
int n, m, cost;
int tata(int x)
{
if(c[x] != x)
c[x] = tata(c[x]);
return c[x];
}
int main()
{
fin>>n>>m;
for(int i=0; i<m; i++)
{
int x, y, c;
fin>>x>>y>>c;
graf.push_back(arb(c, muchie(x, y)));
}
for(int i=1; i<=n; i++) c[i] = i;
sort(graf.begin(), graf.end());
for(int i=0; sol.size() < n-1 && i < m; i++)
{
int x = tata(graf[i].a), y = tata(graf[i].b);
if(x != y)
{
c[x] = y;
cost += graf[i].first;
sol.push_back(graf[i].second);
}
}
n = sol.size();
fout<<cost<<'\n'<<n<<'\n';
for(int i=0; i<n; i++)
fout<<sol[i].first<<' '<<sol[i].second<<'\n';
return 0;
}