답안 #823701

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
823701 2023-08-13T01:44:02 Z Sandarach151 Autobus (COCI22_autobus) C++17
0 / 70
1 ms 468 KB
#include<bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n, m;
    cin >> n >> m;
    vector<pair<int, long long>> adg[n];
    for(int i=0; i<m; i++){
        int a, b;
        long long c;
        cin >> a >> b >> c;
        adg[a-1].push_back({b-1, c});
    }
    int k, q;
    cin >> k >> q;
    vector<vector<long long>> shortest(n, vector<long long>(n, 1e17+6));
    for(int i=0; i<n; i++){
        bool vsted[n]={false};
        priority_queue<pair<pair<long long, int>, int>, vector<pair<pair<long long, int>, int>>, greater<pair<pair<long long, int>, int>>> pq; // {{dist, cnt}, pos}
        pq.push({{0LL, 0}, i});
        shortest[i][i]=0;
        while(!pq.empty()){
            pair<pair<long long, int>, int> cur = pq.top();
            pq.pop();
            if(cur.first.second>=k || vsted[cur.second]){
                continue;
            }
            vsted[cur.second]=true;
            for(auto u : adg[cur.second]){
                if(shortest[i][u.first]>shortest[i][cur.second]+u.second){
                    shortest[i][u.first]=shortest[i][cur.second]+u.second;
                    pq.push({{shortest[i][u.first], cur.first.second+1}, u.first});
                }
            }
        }
    }
    for(int i=0; i<q; i++){
        int a, b;
        cin >> a >> b;
        cout << (shortest[a-1][b-1]==(long long) 1e17+6 ? -1 : shortest[a-1][b-1]) << '\n';
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 468 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -