Pagini recente » Cod sursa (job #2954799) | Cod sursa (job #2000052) | Cod sursa (job #1113253) | Cod sursa (job #712183) | Cod sursa (job #2027117)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
int t[200002];
int radacina(int i)
{
while(t[i]>0)
i=t[i];
return i;
}
pair <int, pair<int,int> > v[400002];
pair <int,int> arbore[200002];
int main()
{
int n,m;
fin>>n>>m;
for(int i=1;i<=n;i++)
{
t[i]=-1;
}
for(int i=1;i<=m;i++)
{
fin>>v[i].second.first>>v[i].second.second>>v[i].first;
}
sort(v+1,v+m+1);
int sol=0;
int nr_muchii=0;
for(int i=1;i<=m;i++)
{
int x=v[i].second.first;
int y=v[i].second.second;
int radx=radacina(x);
int rady=radacina(y);
if(radacina(x)!=radacina(y))
{
sol+=v[i].first;
nr_muchii++;
pair <int,int> muchie;
muchie.first=x;
muchie.second=y;
arbore[nr_muchii]=muchie;
if(t[rady]>t[radx])
{
t[radx]+=t[rady];
t[rady]=x;
}
else
{
t[rady]+=t[radx];
t[radx]=y;
}
}
}
fout<<sol<<"\n"<<nr_muchii<<"\n";
for(int i=1;i<=nr_muchii;i++)
{
fout<<arbore[i].first<<" "<<arbore[i].second<<"\n";
}
return 0;
}