#include <iostream.h>
#include <conio.h>
void main()
{
int n,xi,minX;
long int i;
float *B,**D;
unsigned char *A,*C;
cin>>n>>xi; xi--;
D=new float*[n];
for( i=0;i<n;i++)
{
D=new float[n];
for(int j=0;j<n;j++)
cin>>D[j];
}
A=new unsigned char[n];
B=new float[n];
C=new unsigned char[n];
for(i=0;i<n;i++)
{
A=0;
B=D[xi];
C=xi;
}
C[xi]=-1; A[xi]=1;
for(int k=1;k<n;k++)
{
for(i=0;i<n;i++)
if(B>0 && A!=1)
{minX=i; break;}
for(i=i+1;i<n;i++)
if(A==0 && B>0)
if(B<B[minX])
minX=i;
A[minX]=1;
C[minX]=xi;
for(i=0;i<n;i++)
if(A==0 && xi!=i && B>B[xi]+D[xi])
{B=B[xi]+D[xi]; C=xi;}
cout<<k<<endl;
cout<<"min="<<B[minX]<<" minX="<<minX<<endl;
for(i=0;i<n;i++) cout<<int(A)<<" ";
cout<<endl;
for(i=0;i<n;i++) cout<<B<<" ";
cout<<endl;
for(i=0;i<n;i++) cout<<int(C)<<" ";
cout<<endl<<endl;
xi=minX;
}
for(i=0;i<n;i++) cout<<(C+1)<<" ";
for(i=0;i<n;i++) { delete[] D; D=NULL;}
delete[] D; delete[] A; delete[] B; delete[] C;
A=C=NULL; B=NULL; D=NULL;
getch();
}
[C++]Реализация алгоритмов Примы, Краскала и Дейкстры.
[ATTACH]1471[/ATTACH]
Вот такое задание:
Написать программу, реализующую указанные алгоритмы по заданной весовой матрице ориентированного графа.
Также нужно изобразить граф, построенный по матрице весов, и остовные деревья, найденный при помощи данных алгоритмов.
Вот код алгоритма Дейкстры, я сначала сделал ввод, вывод с файла, но чето фигню выдавало, пришлось все с клавы вводить
http://algolist.manual.ru/maths/graphs/index.php,
Смотри ссылки в прилепленной теме.
Смотри ссылки в прилепленной теме.