Cod sursa(job #1426537)

Utilizator SimonaMhMihai Simona-Maria SimonaMh Data 29 aprilie 2015 21:10:38
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<iostream>
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
struct muchii
{
    int ns,nd,cost;
};
int *parinte;
int parinti(int n)
{
    if (n==parinte[n]) return n;
    return parinte[n]=parinti(parinte[n]);
}
bool cmp (muchii p, muchii q)
{
    if ( p.cost<q.cost) return true;
    return false;
}
int main ()
{
    ifstream f("algoritmul_lui_kruskal.txt");
    int nr_noduri,nr_muchii,i,j,k,p,q;
    f>>nr_noduri>>nr_muchii;
    vector<muchii> gf(nr_muchii);
    for(i=0; i<nr_muchii; i++)
        f>>gf[i].ns>>gf[i].nd>>gf[i].cost;
    sort(gf.begin(), gf.end(), cmp);
    /*for(i=0; i<nr_muchii; i++)
        cout<<gf[i].ns<<" "<<gf[i].nd<<" "<<gf[i].cost<<endl;*/
    parinte=new int[nr_noduri];
    for(i=0; i<nr_noduri; i++)
        parinte[i]=i;
    int contor=nr_noduri-1;
    for(i=0; i<nr_muchii&&contor>0; i++)
    {
        if(parinte[gf[i].ns]!=parinte[gf[i].nd])
        {
            parinte[gf[i].ns]=parinte[gf[i].nd];
            contor--;
            cout<<gf[i].ns<<"-->"<<gf[i].nd<<endl;
        }
    }
}