| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1292841 | kahoul | 기지국 (IOI20_stations) | C++20 | 0 ms | 0 KiB |
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1003;
const int maxk = 12;
vector<int> rel[maxn];
int in[maxn];
int out[maxn];
int dp[maxn][maxk];
bool dfs (int u, int p, int q) {
if (maxn < u) return 0;
if (u == q) return 1;
if (u / 2 != p) {
if (dfs(u / 2, u)) return 1;
}
if (u * 2 != p) {
if (dfs(u * 2, u)) return 1;
}
if (u * 2 + 1 != p) {
if (dfs(u * 2 + 1, u)) return 1;
}
return 0;
}
vector<int> label(int n, int k, vector<int> u, vector<int> v) {
vector<int> labels(n, 0);
for (int i = 0; i < n -1; i++) {
labels[i] = i;
}
return labels;
}
int find_next_station(int u, int t, vector<int> adj) {
set<int> exists;
for (auto v : exists) {
exists.insert(v);
}
if (adj.size() == 1) return adj[0];
if (exists.count(u / 2) && dfs(u / 2, u, t)) return u / 2;
if (exists.count(u * 2) && dfs(u * 2, u, t)) return u * 2;
if (exists.count(u * 2 + 1) && dfs(u * 2 + 1, u, t)) return u * 2 + 1;
}
