Pagini recente » Cod sursa (job #1143982) | Cod sursa (job #146786) | Cod sursa (job #1418931) | Cod sursa (job #2869636) | Cod sursa (job #2504545)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("apm.in");ofstream out("apm.out");
int tata[200001];
struct ura
{
int x,y,cost;
};
bool cmp(ura a,ura b)
{
return a.cost<b.cost;
}
int bos(int a)
{
if(tata[a]==a)
return a;
return tata[a]=bos(tata[a]);
}
void un(int a,int b)
{
tata[a]=bos(a);
tata[b]=bos(b);
tata[tata[a]]=tata[b];
}
ura muc[400001];
int main()
{
int n,m,i,S=0,cn=0;
in>>n>>m;
for(i=1;i<=n;i++)
{
tata[i]=i;
}
for(i=1;i<=m;i++)
{
in>>muc[i].x>>muc[i].y>>muc[i].cost;
}
sort(muc+1,muc+m+1,cmp);
for(i=1;i<=m;i++)
{
if(bos(muc[i].x)!=bos(muc[i].y))
{
un(muc[i].x,muc[i].y);
S+=muc[i].cost;
cn++;
muc[i].cost=1001;
}
}
out<<S<<'\n'<<cn<<'\n';
for(i=1;i<=m;i++)
{
if(muc[i].cost==1001)
out<<muc[i].x<<" "<<muc[i].y<<'\n';
}
}