dijkstra

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <limits.h> #define INF UINT_MAX int main () { int i, j; // Переменные бщего назначения int n, m, temp1, temp2, temp3, start; // Для ввода данных int minWeight, idMinWeight; // Для алгоритма int graph[100][100]; int valid[100]; int weight[100]; /* Ввод данных */ scanf("%d %d", &n, &m); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { graph[i][j] = INF; } valid[i] = 1; weight[i] = INF; } for (i = 0; i < m; i++) { scanf("%d %d %d", &temp1, &temp2, &temp3); graph[temp1][temp2] = temp3; graph[temp2][temp1] = temp3; } scanf("%d", &start); /* Алгоритм */ weight[start] = 0; for (i = 0; i < n; i++) { minWeight = INF + 1; idMinWeight = -1; for (j = 0; j < n; j++) { if (valid[j] && weight[j] < minWeight) { minWeight = weight[j]; idMinWeight = j; } } for (j = 0; j < n; j++) { if ((weight[idMinWeight] + graph[idMinWeight][j]) < weight[j]) { weight[j] = weight[idMinWeight] + graph[idMinWeight][j]; } } valid[idMinWeight] = 0; } for (i = 0; i < n; i++) { printf("%d ", weight[i]); } printf("\n"); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines