Cod sursa(job #1978048)

Utilizator manu18Buza Gregor manu18 Data 6 mai 2017 20:54:15
Problema Arbore partial de cost minim Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include<set>
using namespace std;
ifstream f("apm.in");
ofstream g1("apm.out");
int m,n;
struct muchie
{
    int in,out,cost;
    bool operator <(const muchie& pt) const
    {
        return cost<=pt.cost;
    }
};
vector<muchie> v;
bool sortcomp(muchie i,muchie j)
{
    return i.cost<j.cost;
}
void citire()
{
    muchie nou;
    int i,j,y,c;
    f>>n;
    f>>m;
    for(i=0; i<m; i++)
    {
        f>>j>>y>>c;
        nou.in=j;
        nou.out=y;
        nou.cost=c;
        v.push_back(nou);
    }
}
int find(int *o,int n)
{
    int k=n;
    while(o[k]!=-1)
    {
        if(o[k]!=-1) k=o[k];
    }
    return k;
    
}
int main()
{
    int i;
    int cs = 0,k=0;
    citire();
  //  int g[1000000];
    int *g=new int[n];
    //int *g=new int(n);
    //muchie *x=new muchie[m];
    vector<muchie> x;
    for(i=0;i<n;i++) g[i]=-1;
    sort(v.begin(),v.end(),sortcomp);
    for(muchie i:v)
    {
        if(find(g,i.out)!=find(g,i.in))
        {
            cs=cs+i.cost;
            k++;
            g[find(g,i.out)]=i.in;
            x.push_back(i);
           // x[l++]=i;
        }
    }
    
    g1<<cs<<endl<<k<<endl;
    for(muchie i:x)
        g1<<i.in<<" "<<i.out<<endl;
    //for(i=0;i<k;i++)
        //g1<<x[i].in<<" "<<x[i].out<<endl;
    return 0;
}