Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- /*
- .
- `;|$&@&$%%%|||%%$&@&%' .
- '$$%|!!!;;;!!!||%$@@&%;' .:%&&%!:::::::::::::::::::::|!..
- .||:::::::::::::::::::::::;|$@$!` `|&$!::::::::::::::::::::::::::::!|'.
- ;%:::::::::::::::::::::::::::::::;|&&!` `|&$!:::::::::::::::::::::::::::::::::!%:.
- `||:::::::::::::::::::::::::::::::::::::!$&|' '%&|::::::::::::::::::::::::::::::::::::::;%;.
- :%;:::::::::::::::::::::::::::::::::::::::::!$@&;. '%@%;::::::::::::::::::::::::::::::::::::::::::%!`
- !%:::::::::::::::::::::::::::::::::::::::::::::!%&@&!. .!&@$|:::::::::::::::::::::::::::::::::::::::::::::%!`
- .||:::::::::::::::::::::::::::::::::::::::::::::::;|$$&@&;.'%@@@@$!``%@&$%!:::::::::::::::::::::::::::::::::::::::::::::::|!'
- `|!:::::::::::::::::::::::::::::::::::::::::::::::;!|%$$&@$;:::::;|&@&$%!:::::::::::::::::::::::::::::::::::::::::::::::::||'
- :|;::::::::::::::::::::::::::::::::::::::::::;%&@@@@$%|!!;:::::;!|%&@##@&$$%!:::::::::::::::::::::::::::::::::::::::::::::||:
- :%;:::::::::::::::::::::::::::::::::::!%&@$|;'````.```..```...```..``..```:|&@@|;:::::::::::::::::::::::::::::::::::::::::||:
- :%;::::::::::::::::::::::::::::::!$&|:`.`..................................`````;$&|;:::::::::::::::::::::::::::::::::::::||'
- :%;::::::::::::::::::::::::::|&$:`.........``.................................`.````;$$!::::::::::::::::::::::::::::::::::||'
- '|!::::::::::::::::::::::;%$!`.`````.................................................``:%$!:::::::::::::::::::::::::::::::%!`
- `||:::::::::::::::::::;|$!`..```.......................................................```;$%;::::::::::::::::::::::::::::%!`
- !|:::::::::::::::::!$%'`.............................................................``..``'%&|;::::::::::::::::::::::::;%;.
- ;%;::::::::::::::!$!```..............................................................`...````'%@$|;:::::::::::::::::::::!%:.
- '|!::::::::::::!$!`.`....................................................................``````'%&$$|:::::::::::::::::::||`.
- .!|::::::::::;%! ..........................................................................````;&&$$%;::::::::::::::::%! .
- :%;::::::::%%` ...````````.........`.............................................```.``.'%&$%$%!:::::::::::::;%; .
- .!|::::::!%; . .....```..```````````.``........................................``!&$$%%%!:::::::::::!|' .
- :|;::::|%' .. ....``..........................................:$&$$$$%;:::::::::%! .
- !%::;%|'``..... .....```..................................................````:$&$$%$$|;::::::!%' .
- '|!;%|`.......`.`.........````````..`.......```...........`````.................................````:%&$$$$$%!:::::%! .
- ;$$|`...`':'..`.`````....`````|!`````...................```.````.................`....````..........:$&$%%%%$|:::!|' .
- .||``.``'|!```...........``.`:|;````;!'.``..............```.::```...................`'!:.`.......`..`;$&%%%$$$|;;%; .
- ;|'...``!|'``.`````..........;|:``.:$|`...................``;|:......................'|!```.......``.`!&$%%$%$$%$! .
- :|:.``..'|!.``..``````......``!%:.`:%&|```...............```'!%|:````.`....```.......`'|!..............'%&$%$$$$@|. .
- `|;..````:|:..``;|'.```.......`;%;`:%&#!```..................:|$%:``'|!``````.......```'|!``..........```;$&$%$$@|. .
- !|``...``;|:`..'%%'..```..```:%&&!'!&&$!`.```.``..........```;%&%```|&;``:%!```....```.'|;.``...`.``..`.``|&$$$@| .
- :|:.``````;|:``;$@%:````````'|$;:%%;%&!||`....`''........``..:|$&!``!&&&;``|#$'``....``.:|;`````..`!|'``..`:$&&&; .
- !!````||``:|;`!$@#$:`....``:%|:::;$$$%`;|'....`:'...........`;%&%:`!$;:!&%'!$$&!`...```.;|'`..```..;$;....``|#&$; .
- :|:..`:%;```||;%&@@&;``````;$!:'` .;&@; `|;````.::`........``:|%&!`|$;:` `|$$|;%@@|'....`||`````..``;$|'..```;%!||. .
- |!.```!|'```;$%$&$&&|'`'|$$&|:'. `'. !|`..`.';'.........'!%&%;|%:'. '%@#&: `|&%:```:|;`````````;$%:```..'||!%: .
- '|:```'%!`..``!&&&%$&%:`.`:%%|$@&!` `|!```.'!;`....``.`;|$&%%%:;|&$:. :&@%;`!|`.`````..`;$$;::`.``!%;%! .
- !|`..`!$;..`..:&@$|%&&!'`'%%:` .;$@$:. :|:...`;|;`.`.`..:|%&@&&%:. .|&$&@$;.....`````;$$!!!'..`;%;!|` .
- .|!`..:$%'```.`;||||%&@$;`!%;` '!!|%:.``;|!'```..'!%&#&;'. !&;````.......```;$$||!'..`:%!;%; .
- `|;..`!&|````.:!||||%&&&%|%!'. :%;``;||;````'!|$@%:` `:|$@#####%` :$!``..``........;$%|||:`.`'||:%! .
- '|:..:|&|`''``:|||||%&%'%@!.;@@@#####@&$|!'. `|!';|%!'```;%$&||&&@@@@@&&&&&@#| :$|'``.......``.`!$%|||;```'||:||` .
- :|'.`;%&!.:;``;|||||%&%` `|@&&&&&&&&&&@&' ;&$%|!'.`;|$&;.!@&&&&&&&&&&&@#|. '%|'``.......````!&%||%!`.`'||:;%: .
- :|'.`;%$!`;!'`;|||||%&|. '%|;%&&&&&&&&@$` !&$|:`;%&%` !%`.!&&&&&$$$$@%` '%|'``.```...````|&%|||!'.`'||:;%; .
- :|'.'!%$!`;|:`;|||||%&|. :; `|%|%%|||$|. ;$|;$&; :: `!%%|%||||&%` '%%'``.```.''```'%$%|||!'.`'||::%! .
- '|:`:|%$!`;|;`;|||||%&! ;$||||%|%%|||&; .'` '%|||||%%%||||&%. '%|'``...`.':`.`:%$|||||:..:|!::||. .
- `!;.:|%&!`;||:;||||%$&; ;$||||||||||$%' .|$|||%%%%|||%@| '$|'.`..`.`:!:``!$%|||||:``;$!::!|` .
- .||`:|%&|`;||;;||||%&%` '%%||%%%||%%&! :%|||%|||%||$$' :$!`..`````;|:``|&||||||:.`|&!::!|' .
- `$%''!|&%';||||||||%&! !$|'.```:|&%. ;$%' :$&: ;$!`......:||:`:%$||||||:.:$$;::!%: .
- '$&;'!|$$::|||||||%&%` .|&: .!@|. .|&|`.`;&$' !&;`....``;||;`!$%||||||:`!&%;::!%: .
- :%$|';|%&!'!||||||%&%' ......`!@##@!. '|&&|'.`.... .|$:...```:|||;'%$|||||%$;:$&|;::!%: .
- ;%;%|;||&$::||||||%$$:..``````````. ;; ...````````..`|%'....`'!|||:;$%||||%$$!|&$|;::!%: .
- ;%;|$|!|%&|`;%|||||%&!..`````````... .|#################@@$;. ..``````````.:$|'```.`;||||;%$||%%%%&$%&$%|:::!|' .
- :|;;%&$||%$;:$$||||%&%'..````````.. '$##&;``````````````:$&' ..```````.. ;$!`````:||||!%$%|$&$|$#@&$%%!:::||` .
- '|!:|$@&%%$$;;&$||||%&|. ........ :@$:`````````````````|$: ...... !$:.```'!%%||%$%|%&@$$##@$%$%;:::|!. .
- !%:!%$@&%%@@!%@%||||%&%` '$!``````````````````|%` `%%'``.'!%&&%$@$%%&#&@##@$%%$|;:::%! .
- `%&&@$|!$&&$$#&&$%|||%&#%` .|$:````````````````:%: :$!````;|$&%%@&%$&%&@; `|@@&%;:::;|: .
- '&&';!:%&%|||$&$$@$: .|&;``````````````;%: .;&@@$:`.`;|$@$$@&$&|'%%. .:|$&@|. .
- `' ;&$||%&&%||%&@|` `%&!``````````:%!. `!&@$%%%&|`.`:|$@&&#@&$: .
- !&$%%&#@%|||%$&@%' .';;'`...''. `!&#&%|||||%$$;`.:%&#@@#@@!. .
- .;%&&$$&! :&&$&%|@$%%&@$%%$@#@|:. .`;%&@&@$:``:%&$%%%&@%``:%@#@||#|!$!'';|$@! .
- ;&%:```'|$: :$#%.`|@@@%!&#&;```':;|&#@@@@@@@&$%|!;:::|&!. '$%``|;`;&|. .;!|$;``'!%&@; .
- .%&$$$%|;;$%` `%$!':%%` `|&|::::::::::;$%` ;&$!|%|&|. `%@$$&&&&@#%` .
- `;;;;;;;;;;` || '$; :$|:::::'!&! `%|. !|` !|. .::. .
- */
- #define int long long
- #define pb push_back
- #define mp make_pair
- #define all(a) a.begin(), a.end()
- #define rall(a) a.rbegin(), a.rend()
- void out(vector<int> &a) {
- for (auto it = a.begin(); it != a.end(); ++it) cout << (*it) << " ";
- cout << endl;
- }
- struct edge {
- int u, v, w;
- edge (int u_, int v_, int w_) {
- u = u_, v = v_, w = w_;
- }
- };
- int n, m;
- const int N = 300;
- vector<pair<int, int> > g[N];
- vector<int> path;
- vector<vector<int> > d, p;
- void floyd() {
- for (int k = 0; k < n; ++k) {
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < n; ++j) {
- if (d[i][j] > d[i][k] + d[k][j]) {
- d[i][j] = d[i][k] + d[k][j];
- p[i][j] = k;
- }
- }
- }
- }
- }
- void recoverPath(int u, int v) {
- if (p[u][v] == -1) return;
- recoverPath(u, p[u][v]);
- path.pb(p[u][v]);
- recoverPath(p[u][v], v);
- }
- vector<int> used, dist;
- int dijkstra(int u, int v) {
- for (int i = 0; i < g[u].size(); ++i) {
- if (g[u][i].first == v) g[u][i].second *= 2;
- }
- for (int i = 0; i < g[v].size(); ++i) {
- if (g[v][i].first == u) g[v][i].second *= 2;
- }
- used.assign(n, false);
- dist.assign(n, 1e18);
- dist[0] = 0;
- for (int i = 0; i < n; ++i) {
- int u = -1;
- for (int j = 0; j < n; ++j) {
- if (!used[j] && (u == -1 || dist[j] < dist[u])) u = j;
- }
- used[u] = true;
- for (int j = 0; j < g[u].size(); ++j) {
- int to = g[u][j].first, w = g[u][j].second;
- dist[to] = min(dist[to], dist[u] + w);
- }
- }
- for (int i = 0; i < g[u].size(); ++i) {
- if (g[u][i].first == v) g[u][i].second /= 2;
- }
- for (int i = 0; i < g[v].size(); ++i) {
- if (g[v][i].first == u) g[v][i].second /= 2;
- }
- return dist[n - 1];
- }
- signed main() {
- ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
- cout << fixed << setprecision(20);
- //freopen("input.txt", "r", stdin);
- //freopen("output.txt", "w", stdout);
- cin >> n >> m;
- d.resize(n, vector<int> (n, 1e18)), p.resize(n, vector<int> (n, -1));
- used.resize(n), d.resize(n);
- for (int i = 0; i < m; ++i) {
- int u, v, w;
- cin >> u >> v >> w;
- --u, --v;
- g[u].pb({v, w}), g[v].pb({u, w});
- d[u][v] = d[v][u] = w;
- }
- floyd();
- path.pb(0);
- recoverPath(0, n - 1);
- path.pb(n - 1);
- int len = 0;
- for (int i = 1; i < path.size(); ++i) {
- for (int j = 0; j < g[path[i]].size(); ++j) {
- if (g[path[i]][j].first == path[i - 1]) len += g[path[i]][j].second;
- }
- }
- int ans = -1e18;
- for (int i = 1; i < path.size(); ++i) {
- ans = max(ans, dijkstra(path[i - 1], path[i]));
- }
- cout << ans - len;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement