Pagini recente » Cod sursa (job #1854197) | Cod sursa (job #2123142) | Cod sursa (job #2859640) | Cod sursa (job #3132357) | Cod sursa (job #2028836)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
int w[200002];
int n,m,i,ry,rx,l,sol1,x,y,c;
pair < int , pair < int , int > > v[400002];
pair<int,int>sol[200002];
int f(int k)
{
while(w[k]>0)
k=w[k];
return k;
}
int main()
{
in>>n>>m;
for(i=1;i<=m;i++)
{
in>>x>>y>>c;
v[i].first=c;
v[i].second.first=x;
v[i].second.second=y;
}
sort(v+1,v+m+1);
for(i=1;i<=n;i++)
w[i]=-1;
for(i=1;i<=m;i++)
{
rx=f(v[i].second.first);
ry=f(v[i].second.second);
if(rx!=ry)
{
l++;
sol[l].first=v[i].second.first;
sol[l].second=v[i].second.second;
sol1+=v[i].first;
if(w[rx]<w[ry])
{
w[rx]+=w[ry];
w[ry]=rx;
}
else
{
w[ry]+=w[rx];
w[rx]=ry;
}
}
}
out<<sol1<<endl<<l<<endl;
for(i=1;i<=l;i++)
{
out<<sol[i].second<<" "<<sol[i].first<<endl;
}
return 0;
}