Submission #244713

#TimeUsernameProblemLanguageResultExecution timeMemory
244713santaclaus03Toll (BOI17_toll)C++14
56 / 100
3074 ms5804 KiB
#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
using ii = pair<int, int>;
using vvii = vector<vector<ii>>;

#define INF 1000000000

int main()
{
    int K, n, m, o;
    cin >> K >> n >> m >> o;
    vvii rev(n);
    for (int i = 0; i < m; ++i)
    {
        int a, b, t;
        cin >> a >> b >> t;
        rev[b].emplace_back(t, a);
    }
    vi d0(n, INF);
    d0[0] = 0;
    for (int u = 1; u < n; ++u)
    {
        for (ii e : rev[u])
        {
            d0[u] = min(d0[u], d0[e.second] + e.first);
        }
    }
    for (int i = 0; i < o; ++i)
    {
        int a, b;
        cin >> a >> b;
        int ans;
        if (a == 0)
        {
            ans = d0[b];
        }
        else
        {
            vi d(n, INF);
            d[a] = 0;
            for (int u = a + 1; u < n; ++u)
            {
                for (ii e : rev[u])
                {
                    d[u] = min(d[u], d[e.second] + e.first);
                }
            }
            ans = d[b];
        }
        cout << (ans == INF ? -1 : ans) << endl;
    }
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...