Submission #833467

#TimeUsernameProblemLanguageResultExecution timeMemory
833467vjudge1Commuter Pass (JOI18_commuter_pass)C++17
15 / 100
349 ms23104 KiB
#include <bits/stdc++.h>
using namespace std;

#pragma GCC optimize ("O3")
#pragma GCC optimize ("unroll-loops")
typedef long long ll;
const ll MAXN = 1e5 + 5;
const ll INF = 4e18;
#define endl '\n'
#define pll pair <ll, ll>
#define fi first
#define se second

ll n, m, s, t, u, v;
vector < vector <pll> > adj;
ll dis [MAXN];
ll vis [MAXN];
priority_queue <pll, vector <pll>, greater <pll> > pq;
ll pred [MAXN];

ll dijkstra(ll x, ll y){
    for(ll i = 1; i <= n; i++){
        vis[i] = false;
        dis[i] = INF;
    }
    vis[x] = true;
    dis[x] = 0;
    pq.push({dis[x], x});
    while(!pq.empty()){
        ll discur = pq.top().fi, cur = pq.top().se;
        pq.pop();
        if(!vis[cur]) vis[cur] = true;
        for(auto nex : adj[cur]){
            if(!vis[nex.se] && discur + nex.fi < dis[nex.se]){
                pred[nex.se] = cur;
                dis[nex.se] = discur + nex.fi;
                pq.push({dis[nex.se], nex.se});
            }
        }
    }
    return dis[y];
}

int main(){
    cin >> n >> m >> s >> t >> u >> v;
    adj.resize(n+1);
    for(ll i = 1; i <= m; i++){
        ll x, y, z; cin >> x >> y >> z;
        adj[x].push_back({z, y});
        adj[y].push_back({z, x});
    }
    ll z = dijkstra(s, t);
    // for(ll i = 1; i <= n; i++){
    //     cout << dis[i] << endl;
    // }
    // cout << z << endl;
    ll tmp = t;
    while(pred[tmp] != 0){
        adj[tmp].push_back({0, pred[tmp]});
        adj[pred[tmp]].push_back({0, tmp});
        tmp = pred[tmp];
    }
    cout << dijkstra(u, v) << endl;
}

Compilation message (stderr)

commuter_pass.cpp: In function 'int main()':
commuter_pass.cpp:52:8: warning: unused variable 'z' [-Wunused-variable]
   52 |     ll z = dijkstra(s, t);
      |        ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...