Dijkstra

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #define MAX 1001 #define INFI 9999999 int D[MAX]; int map[MAX][MAX]; int visited[MAX]; void initMap(int N) { for (int s = 1; s <= N; s++) { for (int v = 1; v <= N; v++) { map[s][v] = INFI; } } } void Dijkstra (int S, int N) { for (int i = 0; i < MAX; i++) { D[i] = INFI; } D[S] = 0; for (int i = 1; i <= N; i++) { int Min = INFI; for (int j = 1; j <= N; j++) { if (visited[j] == 0 && Min > D[j]) { Min = D[j]; S = j; } } visited[S] = 1; for (int v = 1; v <= N; v++) { if (map[S][v] != INFI && D[v] > D[S] + map[S][v]) { D[v] = D[S] + map[S][v]; } } } } int main(void) { int N = 0; int M = 0; int S = 0; int V = 0; scanf("%d", &N); scanf("%d", &M); initMap(N); for (int i = 0; i < M; i++) { int s = 0; int v = 0; int w = 0; scanf("%d %d %d", &s, &v, &w); if (map[s][v] > w) { map[s][v] = w; } } scanf("%d %d", &S, &V); Dijkstra(S, N); printf("%d\n", D[V]); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines