Pagini recente » Cod sursa (job #2556818) | Cod sursa (job #1358591) | Cod sursa (job #1504660) | Cod sursa (job #1348336) | Cod sursa (job #259943)
Cod sursa(job #259943)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
long n,m;
int c[1000],nr,S;
struct graf {
int x,y,cost;
};
graf a[200000];
void citire () {
fin>>m>>n;
for(int i=0;i<n;i++)
fin>>a[i].x>>a[i].y>>a[i].cost;
}
void Sort2(int l,int r){
int i=l,j= r,x= a[(l+r)/2].cost;
do{
while (a[i].cost<x)
i++;
while (x < a[j].cost)
j--;
if (i<= j) {
graf y=a[i];
a[i]= a[j];
a[j]= y;
i++;
j--;
}
}
while(i<=j);
if (l<j)
Sort2(l,j);
if (i<r)
Sort2(i,r);
}
void sort () {
Sort2(0,m-1);
}
void form () {
for(int i=1;i<=m;i++)
c[i]=i;
for(i=0;i<n && nr<m-1;i++)
if(c[a[i].x]!=c[a[i].y]) {
S+=a[i].cost;
nr++;
fout<<a[i].x<<" "<<a[i].y<<endl;
for(int j=1;j<n;j++)
if(c[j]==c[a[i].y])
c[j]=c[a[i].x];
}
}
int main () {
citire();
sort();
form();
fout<<nr<<" "<<S<<endl;
fin.close();
fout.close();
return 0;
}