Advertisement
tuki2501

MOVE

Apr 1st, 2020
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <conio.h>
  3. using namespace std;
  4.  
  5. int val[205], dis[205][205], trc[205][205];
  6.  
  7. signed main() {
  8. #ifdef _DEBUG
  9.     freopen("_in" , "r", stdin );
  10.     //freopen("_out", "w", stdout);
  11. #endif
  12.     ios::sync_with_stdio(0); cin.tie(0);
  13.     memset(dis, 0x3f, sizeof(dis));
  14.     int n, a, b; cin >> n >> a >> b;
  15.     for (int i = 1; i <= n; i++) cin >> val[i];
  16.     for (int u, v; cin >> u >> v; ) {
  17.         trc[u][v] = v; trc[v][u] = u;
  18.         dis[u][v] = dis[v][u] = abs(val[u] - val[v]);
  19.     }
  20.     for (int i = 1; i <= n; i++) dis[i][i] = 0;
  21.     for (int k = 1; k <= n; k++)
  22.     for (int i = 1; i <= n; i++)
  23.     for (int j = 1; j <= n; j++) {
  24.         int t = max(dis[i][k], dis[k][j]);
  25.         if(dis[i][j] > t) {
  26.             dis[i][j] = t;
  27.             trc[i][j] = trc[i][k];
  28.         }
  29.     }
  30.     if(!trc[a][b]) {
  31.         cout << -1 << '\n';
  32.         return 0;
  33.     }
  34.     cout << dis[a][b] << '\n';
  35.     while(a != b) cout << a << ' ', a = trc[a][b];
  36.     cout << b << '\n';
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement