Pagini recente » Cod sursa (job #2038001) | Cod sursa (job #1756183) | Cod sursa (job #2316415) | Cod sursa (job #939353) | Cod sursa (job #2028834)
#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[i].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].first<<" "<<sol[i].second<<endl;
}
return 0;
}