제출 #1167722

#제출 시각아이디문제언어결과실행 시간메모리
1167722KnightCommuter Pass (JOI18_commuter_pass)C++20
0 / 100
2095 ms15284 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
using namespace std;
vector<pair<int, long long>> g[100001];

vector<long long> djk(int x, int n){
    priority_queue<pair<long long, int>> q;
    vector<long long> dis;
    int y;
    long long l;
    for(int i=0;i<=n;i++){
        dis.push_back(LLONG_MAX);
    }
    dis[x] = 0;
    q.push({0, x});
    while(!q.empty()){
        y = q.top().second;
        l = q.top().first;
        q.pop();
        if(l==dis[y]){
            for(pair<int, long long> i : g[y]){
                if(dis[i.first]>(l+i.second)){
                    dis[i.first] = l+i.second;
                    q.push({dis[i.first], i.first});
                }
            }
        }
    }
    return dis;
}

int main() {
    //ifstream cin("in.in");
    ios_base::sync_with_stdio(0);cin.tie(0);

    int n, m, s, u, t, v, x, y;
    vector<long long> ds, dt, du, dv;
    long long l, a;
    cin >> n >> m;
    cin >> s >> t >> u >> v;
    for(int i=1;i<=m;i++){
        cin >> x >> y >> l;
        g[x].push_back({y, l});
        g[y].push_back({x, l});
    }

    ds = djk(s, n);
    a = ds[v];
    cout << a << '\n';

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...