Pagini recente » Cod sursa (job #1479768) | Cod sursa (job #823466) | Istoria paginii runda/bravo3 | Istoria paginii runda/lll/clasament | Cod sursa (job #1426538)
#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--;
}
}