Pagini recente » Cod sursa (job #2239898) | Cod sursa (job #700743) | Cod sursa (job #283733) | Cod sursa (job #694953) | Cod sursa (job #2488755)
#include <fstream>
#include <algorithm>
using namespace std;
pair<int,pair<int,int> > c[400001];
pair<int,int> sol[200001];
int t[200001];
int i,n,m,u;
int x,y,rx,ry,cost;
int aflareRadacina (int x) {
while (t[x]>0) {
x=t[x];
}
return x;
}
int main() {
ifstream fin("apm.in");
ofstream fout("apm.out");
fin>>n>>m;
for (i=1;i<=m;i++) {
fin>>c[i].second.first>>c[i].second.second;
fin>>c[i].first;
}
sort (c+1,c+m+1);
for (i=1;i<=n;i++) {
t[i]=-1;
}
for (i=1;i<=m;i++) {
x=c[i].second.first;
y=c[i].second.second;
rx=aflareRadacina(x);
ry=aflareRadacina(y);
if (rx!=ry) {
if (t[rx]<t[ry]) {
t[rx]+=t[ry];
t[y]=x;
sol[++u]=make_pair(x,y);
}
else {
t[ry]+=t[rx];
t[x]=y;
sol[++u]=make_pair(x,y);
}
cost+=c[i].first;
}
}
fout<<cost<<"\n"<<u<<"\n";
for (i=1;i<=u;i++) {
fout<<sol[i].first<<" "<<sol[i].second<<"\n";
}
return 0;
}