Submission #770567

# Submission time Handle Problem Language Result Execution time Memory
770567 2023-07-01T13:28:23 Z Blagoj Robot (JOI21_ho_t4) C++17
0 / 100
3000 ms 2097152 KB
#include <bits/stdc++.h>

#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif

#pragma GCC optimize("Ofast,unroll-loops")

using namespace std;

#define endl '\n'
#define ll long long
#define all(x) x.begin(), x.end()

unordered_map<int, vector<tuple<int, int, int>>> edg[100005];
unordered_map<int, ll> sum[100005], dp2[100005];
ll dp[100005];
int n, m;

void solve() {
    priority_queue<tuple<ll, int, int>> pq;
    pq.push({0, 1, 0});
    while (pq.size() > 0) {
        ll dist;
        int place, color;
        tie(dist, place, color) = pq.top();
        pq.pop();
        if (color) {
            if (dist != dp2[place][color]) continue;
            for (auto [to, color, cost] : edg[place][color]) {
                ll newCost = dist + sum[place][color] - cost;
                if (newCost < dp[to]) {
                    dp[to] = newCost;
                    pq.push({dp[to], to, 0});
                }
            }
            continue;
        }
        if (dist != dp[place]) continue;
        for (int i = 0; i < edg[place].size(); i++) {
            for (auto [to, color, cost] : edg[place][i]) {
                ll newCost = dist + min((ll) cost, sum[place][color] - (ll) cost);
                if (newCost < dp[to]) {
                    dp[to] = newCost;
                    pq.push({dp[to], to, 0});
                }
                if (!dp2[to].count(color) || dist < dp2[to][color]) {
                    dp2[to][color] = dist;
                    pq.push({dp2[to][color], to, color});
                }
            }
        }
    }
    cout << ((dp[n] == LLONG_MAX) ? -1 : dp[n]);
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n >> m;
    for (int i = 2; i <= n; i++) dp[i] = LLONG_MAX;
    for (int i = 0; i < m; i++) {
        int from, to, color, cost;
        cin >> from >> to >> color >> cost;
        edg[from][color].push_back({to, color, cost});
        edg[to][color].push_back({from, color, cost});
        sum[from][color] += cost;
        sum[to][color] += cost;
    }
    solve();
}

Compilation message

Main.cpp: In function 'void solve()':
Main.cpp:42:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::unordered_map<int, std::vector<std::tuple<int, int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |         for (int i = 0; i < edg[place].size(); i++) {
      |                         ~~^~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 9 ms 16724 KB Output is correct
2 Correct 9 ms 16724 KB Output is correct
3 Correct 9 ms 16724 KB Output is correct
4 Correct 9 ms 16672 KB Output is correct
5 Correct 10 ms 17072 KB Output is correct
6 Correct 9 ms 16756 KB Output is correct
7 Correct 60 ms 19912 KB Output is correct
8 Correct 13 ms 17876 KB Output is correct
9 Correct 82 ms 74740 KB Output is correct
10 Correct 96 ms 83380 KB Output is correct
11 Correct 140 ms 122008 KB Output is correct
12 Correct 24 ms 26300 KB Output is correct
13 Correct 50 ms 45204 KB Output is correct
14 Correct 77 ms 61408 KB Output is correct
15 Execution timed out 3062 ms 29828 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1893 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 9 ms 16724 KB Output is correct
2 Correct 9 ms 16724 KB Output is correct
3 Correct 9 ms 16724 KB Output is correct
4 Correct 9 ms 16672 KB Output is correct
5 Correct 10 ms 17072 KB Output is correct
6 Correct 9 ms 16756 KB Output is correct
7 Correct 60 ms 19912 KB Output is correct
8 Correct 13 ms 17876 KB Output is correct
9 Correct 82 ms 74740 KB Output is correct
10 Correct 96 ms 83380 KB Output is correct
11 Correct 140 ms 122008 KB Output is correct
12 Correct 24 ms 26300 KB Output is correct
13 Correct 50 ms 45204 KB Output is correct
14 Correct 77 ms 61408 KB Output is correct
15 Execution timed out 3062 ms 29828 KB Time limit exceeded
16 Halted 0 ms 0 KB -