| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1332449 | 2sqrt3 | Island Hopping (JOI24_island) | C++20 | 211 ms | 1020 KiB |
#include "island.h"
#include <vector>
using namespace std;
void solve(int N, int L) {
// 记录节点是否已经被加入到我们已知的树网络中
vector<bool> vis(N + 1, false);
vis[1] = true; // 初始以节点 1 为基准点
for (int i = 2; i <= N; ++i) {
if (vis[i]) continue;
int curr = i;
vector<int> track;
// 从当前节点出发,不断向节点 1 走,直到碰到已经访问过的节点
while (!vis[curr]) {
track.push_back(curr);
curr = query(curr, 1);
}
// 此时 curr 已经是连通的已知节点。
// 我们只需沿着刚才记录的路径倒推回去,把边连上即可。
int parent = curr;
while (!track.empty()) {
int u = track.back();
track.pop_back();
answer(u, parent);
vis[u] = true; // 标记沿途的节点为已访问
parent = u; // 继续向上连接
}
}
}| # | 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... | ||||
