Advertisement
Guest User

Untitled

a guest
Mar 28th, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <algorithm>
  2. #include <cstdio>
  3.  
  4. using namespace std;
  5.  
  6. #define MAX 200
  7.  
  8. const int oo = 1000000;
  9.  
  10. int n, m;
  11. int g[MAX][MAX];
  12. int ca;
  13. char done[MAX][MAX];
  14. int dist[MAX][MAX];
  15.  
  16. int main(void) {
  17.   for(ca = 1;; ca++) {
  18.  
  19.   scanf("%d%d", &n, &m);
  20.   if (n == 0) break;
  21.   for (int i = 0; i < n; ++i)
  22.     for (int j = 0; j < n; ++j)
  23.       g[i][j] = i == j ? 0 : oo;
  24.   for (int i = 0; i < m; ++i) {
  25.     int u, v;
  26.     scanf("%d%d", &u, &v);
  27.     g[--u][--v] = 1;
  28.   }
  29.   for (int k = 0; k < n; ++k)
  30.     for (int i = 0; i < n; ++i)
  31.       for (int j = 0; j < n; ++j)
  32.         g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
  33.   if (g[0][1] == oo || g[1][0] == oo) {
  34.     printf("Network %d\nImpossible\n\n", ca);
  35.     continue;
  36.   }
  37.  
  38.   for (int i = 0; i < n; ++i)
  39.     for (int j = 0; j < n; ++j) {
  40.       dist[i][j] = oo;
  41.       done[i][j] = 0;
  42.     }
  43.  
  44.   dist[1][1] = 1;
  45.   for (;;) {
  46.     int a = -1, b = -1;
  47.     for (int i = 0; i < n; ++i)
  48.       for (int j = 0; j < n; ++j) {
  49.         if (done[i][j]) continue;
  50.         if (a == -1 || dist[i][j] < dist[a][b]) { a = i; b = j; }
  51.       }
  52.     if (a == 0 && b == 0) {
  53.       break;
  54.     }
  55.     done[a][b] = 1;
  56.     for (int c = 0; c < n; ++c)
  57.       for (int d = 0; d < n; ++d) {
  58.         if (c == a || c == b || d == a || d == b) continue;
  59.         dist[c][d] = min(dist[c][d], dist[a][b] + g[b][c] + g[c][d] + g[d][a] - 1);
  60.       }
  61.   }
  62.   printf("Network %d\nMinimum number of nodes = %d\n\n", ca, dist[0][0]);
  63.   }
  64.   return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement