Pagini recente » Cod sursa (job #164418) | Cod sursa (job #2041284) | Cod sursa (job #30869) | Cod sursa (job #900897) | Cod sursa (job #2304056)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
int n, m, i, j, x, y, cost, op, t[400100], rx, ry, k, suma;
pair<int, pair<int, int>>v[400100];
pair<int, int>sol[400100];
int radacina(int nod){
while(t[nod]>0){
nod=t[nod];
}
return nod;
}
int main(){
fin>>n>>m;
for(i=1; i<=n; i++){
t[i]=-1;
}
for(i=1; i<=m; i++){
fin>>v[i].second.first>>v[i].second.second>>v[i].first;
}
sort(v+1, v+m+1);
for(i=1; i<=m; i++){
x=v[i].second.first;
y=v[i].second.second;
cost=v[i].first;
rx=radacina(x);
ry=radacina(y);
if(rx!=ry){
if(t[rx]<t[ry]){
t[rx]+=t[ry];
t[ry]=rx;
}
else{
t[ry]+=t[rx];
t[rx]=ry;
}
k++;
sol[k].first=x;
sol[k].second=y;
suma+=cost;
}
}
fout<<suma<<"\n"<<k<<"\n";
for(i=1; i<=k; i++){
fout<<sol[i].first<<" "<<sol[i].second<<"\n";
}
}