Pagini recente » Cod sursa (job #2663650) | Cod sursa (job #812326) | Cod sursa (job #2186511) | Cod sursa (job #646177) | Cod sursa (job #2027683)
#include<fstream>
#include<algorithm>
#define nod1 second.first
#define nod2 second.second
#define cost first
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
int n, m, t[100003], rx, ry, s, k;
pair<int, pair<int, int> > l[400002];
pair<int, int> sol[400001];
int rad(int x)
{
while(t[x]>0)
x=t[x];
return x;
}
int main()
{
f>>n>>m;
for(int i;i<=n;i++)
t[i]=-1;
for(int i=1;i<=m;i++)
f>>l[i].nod1>>l[i].nod2>>l[i].cost;
sort(l,l+m+1);
for(int i=1;i<=m;i++)
{
rx=rad(l[i].nod1);
ry=rad(l[i].nod2);
if(rx!=ry)
{
s+=l[i].cost;
sol[++k].first=l[i].nod1;
sol[k].second=l[i].nod2;
if(t[rx]<t[ry])
{
t[rx]+=t[ry];
t[ry]=rx;
}
else
{
t[ry]+=t[rx];
t[rx]=ry;
}
}
}
g<<s<<"\n"<<k<<"\n";
for(int i=1;i<=k;i++)
g<<sol[i].first<<" "<<sol[i].second<<"\n";
return 0;
}