Cod sursa(job #1426538)

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