Mai intai trebuie sa te autentifici.
Cod sursa(job #1436173)
Utilizator | Data | 15 mai 2015 12:56:26 | |
---|---|---|---|
Problema | Arbore partial de cost minim | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1 kb |
#include <iostream>
#include <fstream>
using namespace std;
struct muchie {
int x,y,cost;
};
muchie a[1000];
int mk[40];
int main()
{
ifstream fin("graf.in");
int n,m,aux1,aux2,k,i,j,ct=0;
fin>>n>>m;
for(i=1;i<=m;i++)
fin>>a[i].x>>a[i].y>>a[i].cost;
for(i=1;i<m;i++)
for(j=i+1;j<=m;j++)
if(a[i].cost>a[j].cost) swap(a[i],a[j]);
for(i=1;i<=n;i++)mk[i]=i;
j=1;i=1;
cout<<"Iata muchiile apm-ului:\n";
while(j<=n-1)
{
///verif. daca muchia a[i] poate fi aleasa
if(mk[a[i].x]!=mk[a[i].y])
{
aux1=mk[a[i].y];//e marca PE care o inlocuiesc
aux2=mk[a[i].x];//e marca CU care o inlocuiesc
for(k=1;k<=n;k++)
if(mk[k]==aux1)mk[k]=aux2;
cout<<a[i].x<<" "<<a[i].y<<" "<<a[i].cost<<"\n";
ct+=a[i].cost;
j++;
}
i++;
}
cout<<"Costul total al APM:"<<ct;
return 0;
}