제출 #1272943

#제출 시각아이디문제언어결과실행 시간메모리
1272943duckindogShortcut (IOI16_shortcut)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h> #include "shortcut.h" using namespace std; const long long MAX = 1'000'000'000'000'000'000; const int N = 500 + 10; vector<pair<int, int>> ad[N]; long long find_shortcut(int n, vector<int> l, vector<int> d, int c) { for (int i = 0; i < n - 1; ++i) { ad[i].push_back({i + 1, l[i]}); ad[i + 1].push_back({i, l[i]}); } auto bfs = [&](int st) { vector<long long> f(n, MAX); f[st] = 0; queue<int> q({st}); while (q.size()) { auto u = q.front(); q.pop(); for (const auto& [v, w] : ad[u]) { if (f[v] > f[u] + w) { f[v] = f[u] + w; q.push(v); } } } int ret = -1; for (int i = 0; i < n; ++i) { if (i != st && (ret == -1 || f[i] + d[i] < f[ret] + d[ret])) ret = i; } return make_pair(ret, f[ret] + d[ret] + d[st]); }; long long answer = MAX; for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { ad[i].push_back({j, c}); ad[j].push_back({i, c}); int st = bfs(0).first; answer = min(answer, bfs(st).second); ad[i].pop_back(); ad[j].pop_back(); } } return answer; }

컴파일 시 표준 에러 (stderr) 메시지

shortcut.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
shortcut_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...