Pagini recente » Cod sursa (job #1373739) | Cod sursa (job #2819789) | Cod sursa (job #510871) | Cod sursa (job #1512832) | Cod sursa (job #419499)
Cod sursa(job #419499)
#include <iostream.h>
#include <fstream.h>
ifstream f("apm.in");
ofstream g("apm.out");
struct muchie{
int x,y,c;
};
muchie a[1501],aux,b[1501];
int t[1501],i,j,n,m,cc,cost,k,nr;
void citire(){
f>>n>>m;
for(i=1;i<=m;i++){
f>>a[i].x>>a[i].y>>a[i].c;
}
}
void reuneste(int i,int j){
int k;
i=t[i];
j=t[j];
if(i!=j)
for(k=1;k<=n;k++)
if(t[k]==i)
t[k]=j;
}
void kruskal(){
for(i=1;i<m;i++)
for(j=i+1;j<=m;j++)
if(a[i].c>a[j].c){
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
for(i=1;i<=n;i++)
t[i]=i;
for(k=1;k<=m;k++){
i=a[k].x;
j=a[k].y;
cc=a[k].c;
if(t[i]!=t[j]){
reuneste(i,j);
cost+=cc;
b[nr].x=i;
b[nr].y=j;
nr++;
}
}
g<<cost<<"\n";
g<<nr<<"\n";
for(i=0;i<nr;i++)
g<<b[i].x<<" "<<b[i].y<<"\n";
}
int main(){
citire();
kruskal();
return 0;
f.close();
g.close();
}