Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.68 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. /*
  5.                                                                                                                              .
  6.                                                                                                       `;|$&@&$%%%|||%%$&@&%' .
  7.     '$$%|!!!;;;!!!||%$@@&%;'                                                                  .:%&&%!:::::::::::::::::::::|!..
  8.    .||:::::::::::::::::::::::;|$@$!`                                                     `|&$!::::::::::::::::::::::::::::!|'.
  9.    ;%:::::::::::::::::::::::::::::::;|&&!`                                          `|&$!:::::::::::::::::::::::::::::::::!%:.
  10.   `||:::::::::::::::::::::::::::::::::::::!$&|'                                 '%&|::::::::::::::::::::::::::::::::::::::;%;.
  11.   :%;:::::::::::::::::::::::::::::::::::::::::!$@&;.                        '%@%;::::::::::::::::::::::::::::::::::::::::::%!`
  12.   !%:::::::::::::::::::::::::::::::::::::::::::::!%&@&!.                .!&@$|:::::::::::::::::::::::::::::::::::::::::::::%!`
  13.  .||:::::::::::::::::::::::::::::::::::::::::::::::;|$$&@&;.'%@@@@$!``%@&$%!:::::::::::::::::::::::::::::::::::::::::::::::|!'
  14.  `|!:::::::::::::::::::::::::::::::::::::::::::::::;!|%$$&@$;:::::;|&@&$%!:::::::::::::::::::::::::::::::::::::::::::::::::||'
  15.  :|;::::::::::::::::::::::::::::::::::::::::::;%&@@@@$%|!!;:::::;!|%&@##@&$$%!:::::::::::::::::::::::::::::::::::::::::::::||:
  16.  :%;:::::::::::::::::::::::::::::::::::!%&@$|;'````.```..```...```..``..```:|&@@|;:::::::::::::::::::::::::::::::::::::::::||:
  17.  :%;::::::::::::::::::::::::::::::!$&|:`.`..................................`````;$&|;:::::::::::::::::::::::::::::::::::::||'
  18.  :%;::::::::::::::::::::::::::|&$:`.........``.................................`.````;$$!::::::::::::::::::::::::::::::::::||'
  19.  '|!::::::::::::::::::::::;%$!`.`````.................................................``:%$!:::::::::::::::::::::::::::::::%!`
  20.  `||:::::::::::::::::::;|$!`..```.......................................................```;$%;::::::::::::::::::::::::::::%!`
  21.   !|:::::::::::::::::!$%'`.............................................................``..``'%&|;::::::::::::::::::::::::;%;.
  22.   ;%;::::::::::::::!$!```..............................................................`...````'%@$|;:::::::::::::::::::::!%:.
  23.   '|!::::::::::::!$!`.`....................................................................``````'%&$$|:::::::::::::::::::||`.
  24.   .!|::::::::::;%!   ..........................................................................````;&&$$%;::::::::::::::::%! .
  25.    :%;::::::::%%`          ...````````.........`.............................................```.``.'%&$%$%!:::::::::::::;%; .
  26.    .!|::::::!%;     .               .....```..```````````.``........................................``!&$$%%%!:::::::::::!|' .
  27.     :|;::::|%'    ..                                   ....``..........................................:$&$$$$%;:::::::::%!  .
  28.      !%::;%|'``.....                      .....```..................................................````:$&$$%$$|;::::::!%'  .
  29.      '|!;%|`.......`.`.........````````..`.......```...........`````.................................````:%&$$$$$%!:::::%!   .
  30.       ;$$|`...`':'..`.`````....`````|!`````...................```.````.................`....````..........:$&$%%%%$|:::!|'   .
  31.       .||``.``'|!```...........``.`:|;````;!'.``..............```.::```...................`'!:.`.......`..`;$&%%%$$$|;;%;    .
  32.       ;|'...``!|'``.`````..........;|:``.:$|`...................``;|:......................'|!```.......``.`!&$%%$%$$%$!     .
  33.      :|:.``..'|!.``..``````......``!%:.`:%&|```...............```'!%|:````.`....```.......`'|!..............'%&$%$$$$@|.     .
  34.     `|;..````:|:..``;|'.```.......`;%;`:%&#!```..................:|$%:``'|!``````.......```'|!``..........```;$&$%$$@|.      .
  35.     !|``...``;|:`..'%%'..```..```:%&&!'!&&$!`.```.``..........```;%&%```|&;``:%!```....```.'|;.``...`.``..`.``|&$$$@|        .
  36.    :|:.``````;|:``;$@%:````````'|$;:%%;%&!||`....`''........``..:|$&!``!&&&;``|#$'``....``.:|;`````..`!|'``..`:$&&&;         .
  37.    !!````||``:|;`!$@#$:`....``:%|:::;$$$%`;|'....`:'...........`;%&%:`!$;:!&%'!$$&!`...```.;|'`..```..;$;....``|#&$;         .
  38.   :|:..`:%;```||;%&@@&;``````;$!:'` .;&@; `|;````.::`........``:|%&!`|$;:` `|$$|;%@@|'....`||`````..``;$|'..```;%!||.        .
  39.   |!.```!|'```;$%$&$&&|'`'|$$&|:'.    `'.  !|`..`.';'.........'!%&%;|%:'.  '%@#&: `|&%:```:|;`````````;$%:```..'||!%:        .
  40.  '|:```'%!`..``!&&&%$&%:`.`:%%|$@&!`       `|!```.'!;`....``.`;|$&%%%:;|&$:.        :&@%;`!|`.`````..`;$$;::`.``!%;%!        .
  41.  !|`..`!$;..`..:&@$|%&&!'`'%%:`    .;$@$:.  :|:...`;|;`.`.`..:|%&@&&%:.             .|&$&@$;.....`````;$$!!!'..`;%;!|`       .
  42. .|!`..:$%'```.`;||||%&@$;`!%;`            '!!|%:.``;|!'```..'!%&#&;'.                !&;````.......```;$$||!'..`:%!;%;       .
  43. `|;..`!&|````.:!||||%&&&%|%!'.                :%;``;||;````'!|$@%:`   `:|$@#####%`   :$!``..``........;$%|||:`.`'||:%!       .
  44. '|:..:|&|`''``:|||||%&%'%@!.;@@@#####@&$|!'.   `|!';|%!'```;%$&||&&@@@@@&&&&&@#|     :$|'``.......``.`!$%|||;```'||:||`      .
  45. :|'.`;%&!.:;``;|||||%&%`   `|@&&&&&&&&&&@&'      ;&$%|!'.`;|$&;.!@&&&&&&&&&&&@#|.    '%|'``.......````!&%||%!`.`'||:;%:      .
  46. :|'.`;%$!`;!'`;|||||%&|.   '%|;%&&&&&&&&@$`        !&$|:`;%&%`  !%`.!&&&&&$$$$@%`    '%|'``.```...````|&%|||!'.`'||:;%;      .
  47. :|'.'!%$!`;|:`;|||||%&|.   :;  `|%|%%|||$|.          ;$|;$&;    ::  `!%%|%||||&%`    '%%'``.```.''```'%$%|||!'.`'||::%!      .
  48. '|:`:|%$!`;|;`;|||||%&!    ;$||||%|%%|||&;             .'`      '%|||||%%%||||&%.    '%|'``...`.':`.`:%$|||||:..:|!::||.     .
  49. `!;.:|%&!`;||:;||||%$&;    ;$||||||||||$%'                      .|$|||%%%%|||%@|     '$|'.`..`.`:!:``!$%|||||:``;$!::!|`     .
  50. .||`:|%&|`;||;;||||%&%`    '%%||%%%||%%&!                        :%|||%|||%||$$'     :$!`..`````;|:``|&||||||:.`|&!::!|'     .
  51. `$%''!|&%';||||||||%&!      !$|'.```:|&%.                         ;$%'     :$&:      ;$!`......:||:`:%$||||||:.:$$;::!%:     .
  52. '$&;'!|$$::|||||||%&%`      .|&:   .!@|.                           .|&|`.`;&$'       !&;`....``;||;`!$%||||||:`!&%;::!%:     .
  53. :%$|';|%&!'!||||||%&%'  ......`!@##@!.                                '|&&|'.`....  .|$:...```:|||;'%$|||||%$;:$&|;::!%:     .
  54. ;%;%|;||&$::||||||%$$:..``````````.      ;;                            ...````````..`|%'....`'!|||:;$%||||%$$!|&$|;::!%:     .
  55. ;%;|$|!|%&|`;%|||||%&!..`````````...     .|#################@@$;.      ..``````````.:$|'```.`;||||;%$||%%%%&$%&$%|:::!|'     .
  56. :|;;%&$||%$;:$$||||%&%'..````````..       '$##&;``````````````:$&'      ..```````.. ;$!`````:||||!%$%|$&$|$#@&$%%!:::||`     .
  57. '|!:|$@&%%$$;;&$||||%&|. ........         :@$:`````````````````|$:         ......   !$:.```'!%%||%$%|%&@$$##@$%$%;:::|!.     .
  58.  !%:!%$@&%%@@!%@%||||%&%`                 '$!``````````````````|%`                 `%%'``.'!%&&%$@$%%&#&@##@$%%$|;:::%!      .
  59.  `%&&@$|!$&&$$#&&$%|||%&#%`               .|$:````````````````:%:                  :$!````;|$&%%@&%$&%&@; `|@@&%;:::;|:      .
  60.           '&&';!:%&%|||$&$$@$:             .|&;``````````````;%:               .;&@@$:`.`;|$@$$@&$&|'%%.       .:|$&@|.      .
  61.             `'    ;&$||%&&%||%&@|`           `%&!``````````:%!.            `!&@$%%%&|`.`:|$@&&#@&$:                          .
  62.                     !&$%%&#@%|||%$&@%'          .';;'`...''.          `!&#&%|||||%$$;`.:%&#@@#@@!.                           .
  63.          .;%&&$$&!    :&&$&%|@$%%&@$%%$@#@|:.                 .`;%&@&@$:``:%&$%%%&@%``:%@#@||#|!$!'';|$@!                    .
  64.           ;&%:```'|$:    :$#%.`|@@@%!&#&;```':;|&#@@@@@@@&$%|!;:::|&!.       '$%``|;`;&|. .;!|$;``'!%&@;                     .
  65.            .%&$$$%|;;$%`       `%$!':%%`         `|&|::::::::::;$%`          ;&$!|%|&|.   `%@$$&&&&@#%`                      .
  66.              `;;;;;;;;;;`     ||      '$;           :$|:::::'!&!           `%|.  !|` !|.           .::.                      .
  67.  
  68.              */
  69.  
  70.  
  71. #define int long long
  72. #define pb push_back
  73. #define mp make_pair
  74. #define all(a) a.begin(), a.end()
  75. #define rall(a) a.rbegin(), a.rend()
  76.  
  77. void out(vector<int> &a) {
  78.     for (auto it = a.begin(); it != a.end(); ++it) cout << (*it) << " ";
  79.     cout << endl;
  80. }
  81.  
  82. struct edge {
  83.     int u, v, w;
  84.     edge (int u_, int v_, int w_) {
  85.         u = u_, v = v_, w = w_;
  86.     }
  87. };
  88.  
  89. int n, m;
  90. const int N = 300;
  91. vector<pair<int, int> > g[N];
  92. vector<int> path;
  93. vector<vector<int> > d, p;
  94.  
  95. void floyd() {
  96.     for (int k = 0; k < n; ++k) {
  97.         for (int i = 0; i < n; ++i) {
  98.             for (int j = 0; j < n; ++j) {
  99.                 if (d[i][j] > d[i][k] + d[k][j]) {
  100.                     d[i][j] = d[i][k] + d[k][j];
  101.                     p[i][j] = k;
  102.                 }
  103.             }
  104.         }
  105.     }
  106. }
  107.  
  108. void recoverPath(int u, int v) {
  109.     if (p[u][v] == -1) return;
  110.     recoverPath(u, p[u][v]);
  111.     path.pb(p[u][v]);
  112.     recoverPath(p[u][v], v);
  113. }
  114.  
  115. vector<int> used, dist;
  116.  
  117. int dijkstra(int u, int v) {
  118.     for (int i = 0; i < g[u].size(); ++i) {
  119.         if (g[u][i].first == v) g[u][i].second *= 2;
  120.     }
  121.     for (int i = 0; i < g[v].size(); ++i) {
  122.         if (g[v][i].first == u) g[v][i].second *= 2;
  123.     }
  124.  
  125.     used.assign(n, false);
  126.     dist.assign(n, 1e18);
  127.     dist[0] = 0;
  128.  
  129.     for (int i = 0; i < n; ++i) {
  130.         int u = -1;
  131.         for (int j = 0; j < n; ++j) {
  132.             if (!used[j] && (u == -1 || dist[j] < dist[u])) u = j;
  133.         }
  134.         used[u] = true;
  135.  
  136.         for (int j = 0; j < g[u].size(); ++j) {
  137.             int to = g[u][j].first, w = g[u][j].second;
  138.             dist[to] = min(dist[to], dist[u] + w);
  139.         }
  140.     }
  141.  
  142.     for (int i = 0; i < g[u].size(); ++i) {
  143.         if (g[u][i].first == v) g[u][i].second /= 2;
  144.     }
  145.     for (int i = 0; i < g[v].size(); ++i) {
  146.         if (g[v][i].first == u) g[v][i].second /= 2;
  147.     }
  148.  
  149.     return dist[n - 1];
  150. }
  151.  
  152. signed main() {
  153. ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  154. cout << fixed << setprecision(20);
  155. //freopen("input.txt", "r", stdin);
  156. //freopen("output.txt", "w", stdout);
  157.     cin >> n >> m;
  158.     d.resize(n, vector<int> (n, 1e18)), p.resize(n, vector<int> (n, -1));
  159.     used.resize(n), d.resize(n);
  160.  
  161.     for (int i = 0; i < m; ++i) {
  162.         int u, v, w;
  163.         cin >> u >> v >> w;
  164.         --u, --v;
  165.         g[u].pb({v, w}), g[v].pb({u, w});
  166.         d[u][v] = d[v][u] = w;
  167.     }
  168.  
  169.  
  170.     floyd();
  171.     path.pb(0);
  172.     recoverPath(0, n - 1);
  173.     path.pb(n - 1);
  174.  
  175.     int len = 0;
  176.     for (int i = 1; i < path.size(); ++i) {
  177.         for (int j = 0; j < g[path[i]].size(); ++j) {
  178.             if (g[path[i]][j].first == path[i - 1]) len += g[path[i]][j].second;
  179.         }
  180.     }
  181.  
  182.     int ans = -1e18;
  183.     for (int i = 1; i < path.size(); ++i) {
  184.         ans = max(ans, dijkstra(path[i - 1], path[i]));
  185.     }
  186.     cout << ans - len;
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement