Advertisement
piotrjanuszek

Untitled

Feb 3rd, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.57 KB | None | 0 0
  1. void Dijkstra(City** Cities, City* start)
  2. {
  3.     int previous[20] = { -1 };
  4.     double distances[20] = { DBL_MAX };
  5.     distances[start->citynum] = 0;
  6.     PQHead* QHead = (PQHead*)calloc(1, sizeof(PQHead));
  7.     PQPush(start, QHead, 0);
  8.     while (!PQIsEmpty(QHead))
  9.     {
  10.         City* u = PQTop(QHead);
  11.         Con * p = u->Head->pHead;
  12.         while (p)
  13.         {
  14.             if (distances[p->cityB] > distances[u->citynum] + p->dist)
  15.             {
  16.                 distances[p->cityB] = distances[u->citynum] + p->dist;
  17.                 previous[p->cityB] = u->citynum;
  18.                 PQPush(Cities[p->cityB - 1], QHead, p->dist);
  19.             }
  20.             p = p->next;
  21.         }
  22.     }
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement