Pagini recente » Cod sursa (job #2634498) | Concert2 | Cod sursa (job #1055890) | Cod sursa (job #183928) | Cod sursa (job #2425571)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int N, M;
struct muchii
{
int a,b,cost;
}graf[400005],solutie[400005];
int cost_total=0;
int Tata[200005];
int cont=0;
ifstream fin("apm.in");
ofstream fout("apm.out");
bool cmp(muchii x,muchii y)
{
return x.cost<y.cost;
}
int root(int x)
{
if(Tata[x]==x)
{
return x;
}
else
{
return Tata[x]=root(Tata[x]);
}
}
int main()
{
fin>>N>>M;
for(int i=1;i<=M;i++)
{
fin>>graf[i].a>>graf[i].b>>graf[i].cost;
}
for(int i=1;i<=N;i++)
{
Tata[i]=i;
}
sort(graf+1,graf+M+1,cmp);
for(int i=1;i<=M;i++)
{
cout<<graf[i].a<<" "<<graf[i].b<<" "<<graf[i].cost<<"\n";
}
for(int i=1;i<=M;i++)
{
int root1, root2;
root1=root(graf[i].a);
root2=root(graf[i].b);
if(root1!=root2)
{
solutie[cont++]=graf[i];
cost_total=cost_total+graf[i].cost;
Tata[root1]=root2;
}
}
fout<<cost_total<<"\n"<<cont<<"\n";
for(int i=1;i<cont;i++)
{
fout<<solutie[i].a<<" "<<solutie[i].b<<"\n";
}
return 0;
}