Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СиАОД2

.CPP
Скачиваний:
2
Добавлен:
01.05.2014
Размер:
1.65 Кб
Скачать
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>

#define  N 7

int min( int a, int b)
{
	if( a < b )
	  return a;
	return b;
}

void main (void)
{
  int G[N][N], D[N], SORT[N], TEMP[N], Item[N] ;  //The Matrix of waight
  int i, j, k, l, s;

  randomize();
  clrscr();

  for( i = 0; i < N; i++ )
	 for( j = i; j < N; j++ )
	 {
		 if( i == j)
			G[i][j] = 0;
		 else
		 {
			G[i][j] = 1 + random(9);
			G[j][i] = G[i][j];
		 }
	 }

  printf( "\n\n\tThe Matrix of waight is:\n\n" );  //View
  for( i = 0; i < N; i++ )
  {
	 for( j = 0; j < N; j++ )
		printf( "  %d  ", G[i][j] );

	 printf( "\n" );
  }

	getch();

	printf( "\n‚ўҐ¤ЁвҐ ­®¬Ґа ўҐаиЁ­л, Є®в®а п ў б Ё­вҐаҐбгҐв: " );
	scanf( "%d", &s );    //ALGORITM PHORDA-BELLMANA

	for( i = 0; i < N; i++ )
	{
	  D[i] = G[s][i];
	  Item[i] = D[i];
	}

	D[s] = 0;
	Item[s] = 0;
	for( i = 0; i < N; i++ )
	{
	  SORT[i] = D[i];
	  TEMP[i] = 1;
	}

	for( i = 0; i < (N - 1); i++ )     //SORT B Poriadke Bozrastania
	  for( j = i+1; j < N; j++)
	  {
		  if( SORT[i] > SORT[j] )
		  {
			  k = SORT[i];
			  SORT[i] = SORT[j];
			  SORT[j] = k;
		  }
	  }


	TEMP[s] = 0;
	k = 1;
	for( j = 0; j < N; j++ )
	{
		if( j != s)
		{
			for( i = 0; i < N ; i++)
			{
				if( Item[i] == SORT[k] && TEMP[i] != 0)
					break;
			}
			k++;
			for( l = 0; l < N; l++)
				if( TEMP[l] != 0 )
					{
						D[l] = min( D[l], D[i] + G[i][l] );
					}
			TEMP[i] = 0;

		}

	}

	printf( "\n\nђ ббв®п­Ёп Ё§ ўҐаиЁ­л ­®¬Ґа %d ў® ўбҐ ®бв «м­лҐ:\n", s );
	for( i = 0; i < N; i++ )
		printf( " %d ", D[i] );

	getch();
}