Pagini recente » Cod sursa (job #1272603) | Cod sursa (job #2450339) | Cod sursa (job #1456554) | Cod sursa (job #1616982) | Cod sursa (job #677059)
Cod sursa(job #677059)
#include<fstream>
#include<vector>
#include<algorithm>
#define maxn 400010
using namespace std;
int N,M,nr,suma;
int P[maxn];
vector <int> id;
struct arc{
int x,y,c;
}V[maxn];
ifstream f("apm.in");
ofstream g("apm.out");
void citire(){
f>>N>>M;
for(int i=1;i<=M;i++)
f>>V[i].x>>V[i].y>>V[i].c;
}
bool cmp(arc i,arc j){
return(i.c<j.c);
}
int padure(int i){
if(P[i]==i)
return i;
P[i]=padure(P[i]);
return P[i];
}
int main(){
citire();
for(int i=1;i<=N;i++)
P[i]=i;
sort(V+1,V+M+1,cmp);
for(int i=1;i<=M&&nr<=N-1;i++){
if(padure(V[i].x)!=padure(V[i].y)){
suma+=V[i].c;
id.push_back(i);
P[padure(V[i].x)]=padure(V[i].y);
nr++;
}
}
g<<suma<<'\n'<<nr<<'\n';
for(int i=0;i<nr;i++)
g<<V[id[i]].x<<' '<<V[id[i]].y<<'\n';
g.close();
return 0;
}