Pagini recente » Cod sursa (job #1555182) | Profil georgiana.diana | Cod sursa (job #2483522) | Cod sursa (job #953512) | Cod sursa (job #820394)
Cod sursa(job #820394)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct graf{int a,b,val; bool da;};
graf g[400005];
int t[200005];
int val_t[200005];
bool cmp(graf x,graf y)
{
return x.val<y.val;
}
int tata(int nod)
{
while(t[nod]!=nod)
nod=t[nod];
return nod;
}
int main()
{
int n,m,costarb=0,c=0;
ifstream f("apm.in");
ofstream go("apm.out");
f>>n>>m;
for(int i=1;i<=m;++i)
{
f>>g[i].a>>g[i].b>>g[i].val;
g[i].da=false; // la inceput nu il folosesc
t[i]=i;
}
sort(g+1,g+m+1,cmp);
for(int i=1;i<=m;++i)
{
int ta=tata(g[i].a);
int tb=tata(g[i].b);
if(ta!=tb) // sa nu faca parte din aceeasi componenta coneza / padure
{
costarb+=g[i].val;
g[i].da=true;//il folosesc
++c;
int nod=g[i].b;
while(t[nod]!=nod)
{
int next_nod=t[nod];
t[nod]=g[i].a; // mut tatal in stanga :-??
nod=next_nod;
}
t[nod]=g[i].a;
}
}
go<<costarb<<"\n"<<c<<"\n";
for(int i=1;i<=m;i++)
if(g[i].da==true)
go<<g[i].a<<" "<<g[i].b<<"\n";
return 0;
}