Cod sursa(job #2072890)

Utilizator monicalMonica L monical Data 22 noiembrie 2017 13:32:37
Problema Arbore partial de cost minim Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include <algorithm>

//Alg. lui Prim - Matei
using namespace std;

FILE*f=fopen("apm.in","r");
FILE*g=fopen("apm.out","w");

struct muchie{
    int x,y,c;
}c[400001];

int b[400001],l[200001];

int cmp(muchie x, muchie y){
    return x.c<=y.c;
}

int main()
{
    int n,m,i,j,t=0,nr=0;
    fscanf(f,"%d%d",&n,&m);
    for (i=1;i<=m;i++) fscanf(f,"%d%d%d",&c[i].x,&c[i].y,&c[i].c);
    sort(c+1,c+m+1,cmp);
    l[1]=1;
    for (j=2;j<=n;j++)
        for (i=1;i<=m;i++)
            if (!b[i]&&(l[c[i].x]+l[c[i].y]==1)){
                t+=c[i].c;
                nr++;
                b[i]=1;
                l[c[i].x]=1;
                l[c[i].y]=1;
                break;
            }
    fprintf(g,"%d\n%d\n",t,nr);
    for (i=1;i<=m;i++)
        if (b[i]) fprintf(g,"%d %d\n",c[i].x,c[i].y);
    fclose(f);
    fclose(g);
    return 0;
}