Pagini recente » Cod sursa (job #1047120) | Cod sursa (job #3261255) | Cod sursa (job #2895113) | Cod sursa (job #1276882) | Cod sursa (job #1088926)
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
ifstream f("amp.in");
ofstream g("apm.out");
int n,m,k,nr=0,cc[400001];
struct muchii
{
int e1,e2,cost,conex;
};
muchii v[400001];
bool cmp(muchii a,muchii b)
{
return a.cost<b.cost;
}
int main()
{ int i,x,y,val,c=0;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>v[i].e1>>v[i].e2>>v[i].cost;
for(int j=1;j<i;j++)
if(v[j].e1==v[i].e1&&v[j].e2==v[i].e2)
if(v[i].cost>v[j].cost)
{ i--;m--;}
else
{v[j].cost=v[i].cost;i--;m--;}
}
sort(v+1,v+m+1,cmp);
for(i=1;i<=n;i++)cc[i]=i;
for(k=1;k<=m;k++)
{
x=v[k].e1;
y=v[k].e2;
if(cc[x]!=cc[y])
{
c+=v[k].cost;nr++;
// g<<x<<" "<<y<<'\n';
v[k].conex=1;
val=cc[y];//v[k].conex=cc[x];
for(i=1;i<=n;i++)
if(cc[i]==val)cc[i]=cc[x];
/* for(i=1;i<=m;i++)
if(v[i].conex==val)v[i].conex=cc[x];*/
}
//else v[k].conex=0;
}
g<<c<<'\n';
g<<nr<<'\n';
//g<<c<<'\n';
for(i=1;i<=m;i++)
{
if(v[i].conex)g<<v[i].e1<<" "<<v[i].e2<<'\n';
}
return 0;
}