Pagini recente » Cod sursa (job #1244053) | Cod sursa (job #238864) | Cod sursa (job #2623869) | Cod sursa (job #1512880) | Cod sursa (job #3226588)
#include <bits/stdc++.h>
#pragma optimize GCC ("Ofast")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
///#include <tryhardmode>
///#include <GODMODE::ON>
using namespace std;
ifstream fin ("apm.in");
ofstream fout ("apm.out");
#define cin fin
#define cout fout
const int NMAX=2e5+5;
int t[NMAX];
int p[NMAX];
struct elem{
int x;
int y;
int c;
}apm[NMAX];
int root(int x)
{
if(x==t[x])
return x;
return t[x]=root(t[x]);
}
void solve(int x,int y)
{
t[root(y)]=root(x);
}
bool cmp(int x,int y)
{
return apm[x].c<apm[y].c;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,i,j,m,s=0;
vector<elem>v;
cin>>n>>m;
for(i=1;i<=n;i++)
t[i]=i;
for(i=1;i<=m;i++)
{
cin>>apm[i].x>>apm[i].y>>apm[i].c;
p[i]=i;
}
sort(p+1,p+m+1,cmp);
for(i=1;i<=m;i++)
{
if(root(apm[p[i]].x)!=root(apm[p[i]].y))
{
solve(apm[p[i]].x,apm[p[i]].y);
s+=apm[p[i]].c;
v.push_back(apm[p[i]]);
}
}
cout<<s<<"\n";
cout<<v.size()<<"\n";
for(auto i:v)
cout<<i.x<<" "<<i.y<<"\n";
return 0;
}