Pagini recente » Cod sursa (job #41958) | Cod sursa (job #2317669) | Cod sursa (job #470951) | Cod sursa (job #1431035) | Cod sursa (job #2337132)
#include <bits/stdc++.h>
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
struct muchie
{
int i,j,c;
};
const int nx = 200001;
vector < muchie > w;
vector < pair < int , int > > sol;
int suma = 0;
int nr = 0;
int t[nx];
int n,m,i,j,c;
int radacina (int nod)
{
if(nod==t[nod]) return nod;
t[nod] = radacina(t[nod]);
return t[nod];
}
void uneste (int i, int j)
{
t[radacina(i)]=radacina(j);
}
bool crit (const muchie &a, const muchie &b)
{
return a.c<b.c;
}
void apm()
{
sort(w.begin(),w.end(), crit);
for(int i=1; i<=n; i++)
t[i] = i;
for(vector < muchie > :: iterator it = w.begin(); it!=w.end() && nr<n-1; it++)
{
if(radacina(it->i)!=radacina(it->j))
{
uneste(it->i,it->j);
suma+=it->c;
sol.push_back({it->i,it->j});
nr++;
}
}
out<<suma<<'\n'<<nr<<'\n';
for(vector < pair < int , int > > :: iterator it = sol.begin(); it!=sol.end(); it++)
out<<it->first<<' '<<it->second<<'\n';
}
int main()
{
in>>n>>m;
for(;m;m--)
{
in>>i>>j>>c;
w.push_back({i,j,c});
}
apm();
return 0;
}