Cod sursa(job #1836941)

Utilizator AsttridMocanu Ada Astrid Asttrid Data 28 decembrie 2016 21:01:16
Problema Arbore partial de cost minim Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
///alg prim
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
struct elem{int x,y;
float c;};
elem u[400001];
int viz[200001],i,j,n,m=1,k,s[400001],f;
float cost;


void citire(){in>>n>>m;
for(i=1;i<=m;i++)in>>u[i].x>>u[i].y>>u[i].c;
in.close();
}



void rez(){
    cost+=u[1].c;
viz[u[1].x]=viz[u[1].y]=1;
k=1;s[k]=1;
    while(k<=n-2){
        for(i=2;i<=m;i++)
        if(viz[u[i].x]+viz[u[i].y]==1){s[++k]=i;
                           cost+=u[i].c;
viz[u[i].x]=viz[u[i].y]=1;
break;}}
}

bool cmp(elem a,elem b){
return a.c<b.c;
}

int main(){
citire();
sort(u+1,u+m+1,cmp);///pas1
rez();
out<<cost<<"\n";
out<<n-1<<"\n";
for(i=1;i<=k;i++)
     out<<u[s[i]].x<<" "<<u[s[i]].y<<"\n";
return 0;}