Advertisement
karbaev

dijkstra AdM

Mar 28th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4. const int V=6;
  5.  
  6. //алгоритм Дейкстры
  7. void Dijkstra(int GR[V][V], int st) {
  8.   int distance[V], count, index, i, u, m=st+1;
  9.   bool visited[V];
  10.   for (i=0; i<V; i++) {
  11.     distance[i]=INT_MAX; visited[i]=false;
  12.   }
  13.   distance[st]=0;
  14.   for (count=0; count<V-1; count++){
  15.     int min=INT_MAX;
  16.     for (i=0; i<V; i++)
  17.       if (!visited[i] && distance[i]<=min) {
  18.         min=distance[i]; index=i;
  19.       }
  20.     u=index;
  21.     visited[u]=true;
  22.     for (i=0; i<V; i++)
  23.       if (!visited[i] && GR[u][i] && distance[u]!=INT_MAX &&
  24.     distance[u]+GR[u][i]<distance[i])
  25.     distance[i]=distance[u]+GR[u][i];
  26.   }
  27.   cout<<"Стоимость пути из начальной вершины до остальных:\t\n";
  28.   for (i=0; i<V; i++) if (distance[i]!=INT_MAX)
  29.   cout<<m<<" > "<<i+1<<" = "<<distance[i]<<endl;
  30.   else cout<<m<<" > "<<i+1<<" = "<<"маршрут недоступен"<<endl;
  31. }
  32.  
  33. //главная функция
  34. void main()
  35. {
  36. setlocale(LC_ALL, "Rus");
  37. int start, GR[V][V]={
  38. {0, 1, 4, 0, 2, 0},
  39. {0, 0, 0, 9, 0, 0},
  40. {4, 0, 0, 7, 0, 0},
  41. {0, 9, 7, 0, 0, 2},
  42. {0, 0, 0, 0, 0, 8},
  43. {0, 0, 0, 0, 0, 0}};
  44.  cout<<"Начальная вершина >> "; cin>>start;
  45.  Dijkstra(GR, start-1);
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement