Advertisement
Mirbek

ГОРОДА (Областная олимпиада 2019, день 1)

Feb 11th, 2022
754
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. string S = "BAJTOKLNE";
  6.  
  7. int getNumber(char c) {
  8.     for (int i = 0; i < S.size(); i++) {
  9.         if (S[i] == c) return i;
  10.     }
  11. }
  12.  
  13. int w[9][9], used[9];
  14. vector <int> path;
  15.  
  16. void dfs(int v, int B, int len) {
  17.     path.push_back(v);
  18.     used[v] = 1;
  19.     if (v == B) {
  20.         int ans = len;
  21.         for (int i = 1; i < path.size(); i++) {
  22.             len -= w[path[i - 1]][path[i]];
  23.             ans = min(ans, abs(len));
  24.         }
  25.         cout << ans << endl;
  26.         exit(0);
  27.     }
  28.     for (int i = 0; i < 9; i++) {
  29.         if (w[v][i] > 0 && used[i] == 0) {
  30.             dfs(i, B, len);
  31.         }
  32.     }
  33.     path.pop_back();
  34. }
  35.  
  36. int main(){
  37.     w[getNumber('A')][getNumber('T')] = 102;
  38.     w[getNumber('A')][getNumber('J')] = 377;
  39.     w[getNumber('A')][getNumber('B')] = 193;
  40.     w[getNumber('B')][getNumber('L')] = 179;
  41.     w[getNumber('L')][getNumber('K')] = 216;
  42.     w[getNumber('L')][getNumber('N')] = 180;
  43.     w[getNumber('J')][getNumber('O')] = 106;
  44.     w[getNumber('O')][getNumber('E')] = 240;
  45.  
  46.     w[getNumber('T')][getNumber('A')] = 102;
  47.     w[getNumber('J')][getNumber('A')] = 377;
  48.     w[getNumber('B')][getNumber('A')] = 193;
  49.     w[getNumber('L')][getNumber('B')] = 179;
  50.     w[getNumber('K')][getNumber('L')] = 216;
  51.     w[getNumber('N')][getNumber('L')] = 180;
  52.     w[getNumber('O')][getNumber('J')] = 106;
  53.     w[getNumber('E')][getNumber('O')] = 240;
  54.  
  55.     char A, B;
  56.     int len;
  57.     cin >> A >> B >> len;
  58.  
  59.     dfs(getNumber(A), getNumber(B), len);
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement