Pagini recente » Cod sursa (job #1682187) | Cod sursa (job #1358089) | Cod sursa (job #2549211) | Cod sursa (job #878483) | Cod sursa (job #1438342)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define MAX_N 200010
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
vector <int> ACM;
int X[MAX_N], Y[MAX_N], C[MAX_N], R[MAX_N], Ind[MAX_N];
int cost_apm;
int comp_conexa(int a)
{
if(R[a] == a)
return a;
R[a] = comp_conexa(R[a]);
return R[a];
}
void reuniune(int a, int b)
{
R[comp_conexa(a)] = comp_conexa(b);
}
bool sortare(int x, int y)
{
return (C[x] < C[y]);
}
int main()
{
int N, M, i, x, y, c;
f >> N >> M;
for(i = 1; i <= M; i++)
{
f >> X[i] >> Y[i] >> C[i];
Ind[i] = i;
R[i] = i;
}
sort(Ind+1, Ind+M+1, sortare);
for(i = 1; i <= M; i++)
{
if(comp_conexa(X[Ind[i]]) != comp_conexa(Y[Ind[i]]))
{
cout<<"am adaugat "<<C[Ind[i]]<<endl;
cost_apm += C[Ind[i]];
reuniune(X[Ind[i]], Y[Ind[i]]);
ACM.push_back(Ind[i]);
}
}
g << cost_apm << endl << N-1 <<endl;
for(i = 0; i < ACM.size(); i++)
g<<X[ACM[i]]<<" "<<Y[ACM[i]]<<endl;
return 0;
}