#include <stdio.h>
#define INF 99999
int main()
{
int n, cost[10][10], dist[10], visited[10];
int i, j, u, min, src;
printf("Enter number of vertices: ");
printf("Enter adjacency matrix (use %d for INF):\n", INF
); for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf("%d", &cost
[i
][j
]);
printf("Enter source vertex (0 to %d): ", n
- 1);
// Initialize
for (i = 0; i < n; i++) {
dist[i] = cost[src][i];
visited[i] = 0;
}
dist[src] = 0;
visited[src] = 1;
// Dijkstra
for (i = 0; i < n - 1; i++) {
min = INF;
u = -1;
for (j = 0; j < n; j++) {
if (!visited[j] && dist[j] < min) {
min = dist[j];
u = j;
}
}
if (u == -1) break; // <-- Prevent infinite loop
visited[u] = 1;
for (j = 0; j < n; j++) {
if (!visited[j] && dist[j] > dist[u] + cost[u][j]) {
dist[j] = dist[u] + cost[u][j];
}
}
}
// Output
printf("\nShortest distances from source %d:\n", src
); for (i = 0; i < n; i++)
printf("%d → %d = %d\n", src
, i
, dist
[i
]);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIElORiA5OTk5OQoKaW50IG1haW4oKQp7CiAgICBpbnQgbiwgY29zdFsxMF1bMTBdLCBkaXN0WzEwXSwgdmlzaXRlZFsxMF07CiAgICBpbnQgaSwgaiwgdSwgbWluLCBzcmM7CgogICAgcHJpbnRmKCJFbnRlciBudW1iZXIgb2YgdmVydGljZXM6ICIpOwogICAgc2NhbmYoIiVkIiwgJm4pOwoKICAgIHByaW50ZigiRW50ZXIgYWRqYWNlbmN5IG1hdHJpeCAodXNlICVkIGZvciBJTkYpOlxuIiwgSU5GKTsKICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykKICAgICAgICAgICAgc2NhbmYoIiVkIiwgJmNvc3RbaV1bal0pOwoKICAgIHByaW50ZigiRW50ZXIgc291cmNlIHZlcnRleCAoMCB0byAlZCk6ICIsIG4gLSAxKTsKICAgIHNjYW5mKCIlZCIsICZzcmMpOwoKICAgIC8vIEluaXRpYWxpemUKICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBkaXN0W2ldID0gY29zdFtzcmNdW2ldOwogICAgICAgIHZpc2l0ZWRbaV0gPSAwOwogICAgfQoKICAgIGRpc3Rbc3JjXSA9IDA7CiAgICB2aXNpdGVkW3NyY10gPSAxOwoKICAgIC8vIERpamtzdHJhCiAgICBmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewoKICAgICAgICBtaW4gPSBJTkY7CiAgICAgICAgdSA9IC0xOwoKICAgICAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgIGlmICghdmlzaXRlZFtqXSAmJiBkaXN0W2pdIDwgbWluKSB7CiAgICAgICAgICAgICAgICBtaW4gPSBkaXN0W2pdOwogICAgICAgICAgICAgICAgdSA9IGo7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICh1ID09IC0xKSBicmVhazsgICAgLy8gPC0tIFByZXZlbnQgaW5maW5pdGUgbG9vcAoKICAgICAgICB2aXNpdGVkW3VdID0gMTsKCiAgICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykgewogICAgICAgICAgICBpZiAoIXZpc2l0ZWRbal0gJiYgZGlzdFtqXSA+IGRpc3RbdV0gKyBjb3N0W3VdW2pdKSB7CiAgICAgICAgICAgICAgICBkaXN0W2pdID0gZGlzdFt1XSArIGNvc3RbdV1bal07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gT3V0cHV0CiAgICBwcmludGYoIlxuU2hvcnRlc3QgZGlzdGFuY2VzIGZyb20gc291cmNlICVkOlxuIiwgc3JjKTsKICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgcHJpbnRmKCIlZCDihpIgJWQgPSAlZFxuIiwgc3JjLCBpLCBkaXN0W2ldKTsKCiAgICByZXR1cm4gMDsKfQ==