Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Dijkstra(City** Cities, City* start)
- {
- int previous[20] = { -1 };
- double distances[20] = { DBL_MAX };
- distances[start->citynum] = 0;
- PQHead* QHead = (PQHead*)calloc(1, sizeof(PQHead));
- PQPush(start, QHead, 0);
- while (!PQIsEmpty(QHead))
- {
- City* u = PQTop(QHead);
- Con * p = u->Head->pHead;
- while (p)
- {
- if (distances[p->cityB] > distances[u->citynum] + p->dist)
- {
- distances[p->cityB] = distances[u->citynum] + p->dist;
- previous[p->cityB] = u->citynum;
- PQPush(Cities[p->cityB - 1], QHead, p->dist);
- }
- p = p->next;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement