Advertisement
Guest User

Untitled

a guest
May 24th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.51 KB | None | 0 0
  1. #include <stdio.h>
  2. const int INF = 100000;
  3. void dijkstra(int s, int n, int a[n][n], int **r) {
  4.     int d[n];
  5.     int visited[n];
  6.     int index;
  7.     int u;
  8.     for (int i = 0; i < n; ++i) {
  9.         d[i] = INF;
  10.         visited[i] = 0;
  11.     }
  12.     d[s] = 0;
  13.     for (int i = 0; i < n; ++i) {
  14.         int v = INF;
  15.         for (int j = 0; j < n; ++j) {
  16.             if (!visited[j] && (d[j] <= v)) {
  17.                 v = d[j];
  18.                 index = j;
  19.             }
  20.         }
  21.             u = index;
  22.             visited[u] = 1;
  23.             for (int j = 0; j < n; ++j) {
  24.                 if (!visited[j] && a[u][j] && d[u] != INF && (d[u] + a[u][j]) < d[j]) {
  25.                     d[j] = d[u] + a[u][j];
  26.                 }
  27.             }
  28.     }
  29.     for (int i = 0; i < n; ++i) {
  30.         if (d[i] != INF) {
  31.             r[i] = d[i];
  32.         }
  33.         else {
  34.             r[i] = -1;
  35.         }
  36.     }
  37. }
  38.  
  39. int main() {
  40.     int n, m, s;
  41.     FILE *fi = fopen("input.txt", "r");
  42.     fscanf(fi, "%d%d%d", &n, &m, &s);
  43.     printf("%d%d%d", n, m, s);
  44.     int matrix[n][n];
  45.     int a = 0, b = 0, c = 0;
  46.     for (int i = 0; i < n; ++i) {
  47.         for (int j = 0; j < n; ++j) {
  48.             matrix[i][j] = 0;
  49.         }
  50.     }
  51.     while (fscanf(fi, "%d%d%d", &a, &b, &c) != EOF) {
  52.         printf("\n%d%d%d", a, b, c);
  53.         matrix[a-1][b-1] = c;
  54.     }
  55.     fclose(fi);
  56.     printf("\n");
  57.     int r[n];
  58.     dijkstra(s-1, n, matrix, &r);
  59.     for (int i = 0; i < n; i ++) {
  60.         printf("%d ", r[i]);
  61.     }
  62.  
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement