# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
836592 | SoulKnight | 사이버랜드 (APIO23_cyberland) | C++17 | 1018 ms | 106220 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cyberland.h"
// #include "bits/stdc++.h"
#include <vector>
#include <iostream>
#include <array>
#include <queue>
#include <numeric>
using namespace std;
#define ll long long
#define ln '\n'
const int N = 1e5 + 5;
const int LG = 50;
const long double INF = 5e18;
int par[N];
vector<array<ll, 2>> adj[N];
long double dist[N][LG], p2[LG];
priority_queue<array<long double, 3>, vector<array<long double, 3>>, greater<array<long double, 3>>> pq;
int find(int u){return (par[u]==u? u: par[u]=find(par[u]));}
double solve(int NN, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
for (int i = 0; i < NN; i++) adj[i].clear();
iota(par, par+NN, 0);
K = min(K, LG);
p2[0] = 1.0;
for (int i = 1; i < LG; i++) p2[i] = p2[i-1] * 2.0;
for (int i = 0; i < M; i++){
if (x[i] > y[i]) swap(x[i], y[i]);
if (x[i] == 0 && arr[y[i]] == 0) {c[i] = 0; arr[y[i]] = 1;} // no multi-edge
adj[x[i]].push_back({c[i], y[i]});
adj[y[i]].push_back({c[i], x[i]});
par[find(x[i])] = find(y[i]);
}
for (int i = 0; i < NN; i++){
if (arr[i] != 0 || find(i) != find(0)) continue;
adj[0].push_back({0, i});
adj[i].push_back({0, 0});
}
for (int i = 0; i < NN; i++){
for (int j = 0; j < LG; j++) dist[i][j] = INF;
}
for (int j = 0; j < LG; j++) dist[H][j] = 0.0;
pq.push({0.0, H, 0}); // (w, node, # of /2)
while (!pq.empty()){
long double w = pq.top()[0];
int u = pq.top()[1];
int cnt = pq.top()[2];
pq.pop();
if (w > dist[u][cnt]) continue;
for (auto& [e, v]: adj[u]){
if (w * p2[cnt] + e < dist[v][cnt] * p2[cnt]){
dist[v][cnt] = w + e / p2[cnt];
pq.push({dist[v][cnt], v, min(K, cnt + (arr[v] == 2))});
}
}
}
long double ans = INF;
for (int j = 0; j <= K; j++){
ans = min(ans, dist[0][j]);
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |