Pagini recente » Cod sursa (job #967974) | Cod sursa (job #261638) | Cod sursa (job #2010916) | Monitorul de evaluare | Cod sursa (job #3163664)
#include <fstream>
#include <vector>
using namespace std;
const int Vmax = 200001;
int n, m;
int T[Vmax], Rang[Vmax];
ifstream fin("apm.in");
ofstream fout("apm.out");
vector<int> muchii[2*Vmax];
int Radacina(int x){
if(T[x] == 0)
return x;
else{
T[x] = Radacina(T[x]);
return Radacina(T[x]);
}
}
void Unire(int k, int l){
if(Radacina(k) != Radacina(l)){
if(Rang[Radacina(k)] > Rang[Radacina(l)])
T[Radacina(l)] = Radacina(k);
else{
T[Radacina(k)] = Radacina(l);
if(Rang[Radacina(k)] == Rang[Radacina(l)])
Rang[Radacina(l)]++;
}
}
}
int main()
{
fin>>n>>m;
int m1=m, cnt=0;
while(m--){
cnt++;
int x, y, c;
fin>>x>>y>>c;
muchii[cnt].push_back(x);
muchii[cnt].push_back(y);
muchii[cnt].push_back(c);
}
for(int i=1;i<=m1;i++)
for(int j=i+1;j<=m1;j++)
if(muchii[i][2]>muchii[j][2]) swap(muchii[i], muchii[j]);
int cost_min=0;
if(m1>40)
fout<<" ";
else
fout<<" ";
int cntt=0;
for(int i=1;i<=m1;i++){
if(Radacina(muchii[i][0]) != Radacina(muchii[i][1])){
Unire(muchii[i][0], muchii[i][1]);
fout<<muchii[i][0]<<" "<<muchii[i][1]<<'\n';
cntt++;
cost_min+=muchii[i][2];
}
}
fout.seekp(0);
fout<<cost_min<<'\n';
fout<<cntt<<'\n';
return 0;
}