Submission #765935

#TimeUsernameProblemLanguageResultExecution timeMemory
765935OrazBCommuter Pass (JOI18_commuter_pass)C++14
0 / 100
156 ms17936 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <functional> using namespace __gnu_pbds; using namespace std; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; //Dijkstra->set //set.find_by_order(x) x-position value //set.order_of_key(x) number of strictly less elements don't need *set.?? #define N 100005 #define wr cout << "Continue debugging\n"; #define all(x) (x).begin(), (x).end() #define ll long long int #define pii pair <int, int> #define pb push_back #define ff first #define ss second int n, m, s, t, u, v; vector<pii> E[N]; void dijk(int x, vector<ll>&dis){ priority_queue<pii> q; q.push({0, x}); dis[x] = 0; while(!q.empty()){ int x = q.top().ss; q.pop(); for (auto i : E[x]){ if (dis[i.ff] > dis[x]+i.ss){ dis[i.ff] = dis[x]+i.ss; q.push({-dis[i.ff], i.ff}); } } } } int main () { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m >> s >> t >> u >> v; while(m--){ int x, y, w; cin >> x >> y >> w; E[x].pb({y, w}); E[y].pb({x, w}); } vector<ll> disu(n+1, 1e18), disv(n+1, 1e18), diss(n+1, 1e18); dijk(v, disv); ll l = 2, r = 2, ans = -1; while(l <= r){ ll md = (l+r)/2; vector<ll> dis(n+1, 1e18); vector<int> can(n+1, 0); priority_queue<pii> q; q.push({0, s}); dis[s] = 0; while(!q.empty()){ int x = q.top().ss; q.pop(); if (disv[x] <= md) can[x] = 1; for (auto i : E[x]){ if (dis[i.ff] > dis[x]+i.ss){ dis[i.ff] = dis[x]+i.ss; can[i.ff] = can[x]; q.push({-dis[i.ff], i.ff}); }else if (dis[i.ff] == dis[x]+i.ss) can[i.ff] |= can[x]; } } if (can[t]){ ans = md; r = md - 1; }else l = md + 1; } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...