Приложение а.
(Обязательное)
Текст основной программы.
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<conio.h>
#include<time.h>
using
namespace
std;
int
a,b,u,v,n,i,j,N=1;
int
visited[101]={0},_min,_mincost=0,cost[101][101];
void
main()
{
setlocale(LC_ALL,
"Russian");
srand(time(NULL));
printf("\n
Введите
кол-во
вершин
:");
scanf("%d",&n);
printf("\n
Элементы
матрицы
%i*%i:\n",n,n);
float
t=clock()/100;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
//scanf("%d",&cost[i][j]);
if
(i==j) cost[i][j]=0; else
cost[i][j]=0+rand()%15;
cout<<cost[i][j]<<"\t";
if(cost[i][j]==0)
cost[i][j]=999;
}
printf("\n");
}
visited[1]=1;
printf("\n");
while(N<n)
//
N - номер вершины
{
for(i=1,_min=999;i<=n;i++)
for(j=1;j<=n;j++)
if(cost[i][j]<_min)
if(visited[i]!=0)
{
_min=cost[i][j];
a=u=i;
b=v=j;
}
if(visited[u]==0
|| visited[v]==0)
{
printf("\n
Ребро
%d:(%d %d) вес:%d",N++,a,b,_min);
_mincost+=_min;
visited[b]=1;
}
cost[a][b]=cost[b][a]=999;
}
float
tt=clock()/100-t;
printf("\n
Время
выполнения
алгоритма:
%f",tt);
printf("\n
Вес минимального остовного
дерева=%d",_mincost);
getch();
}
14