이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "highway.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 2e5 + 3e2;
vector<int> g[MAXN];
int p[MAXN], d[MAXN];
vector<int> vec[MAXN];
int edgeID[MAXN];
void dfs(int v, int par, int dep){
p[v] = par;
d[v] = dep;
vec[dep].push_back(v);
for (int u : g[v]){
if (u != par) dfs(u, v, dep + 1);
}
}
void find_pair(int N, vector<int> U, vector<int> V, int A, int B) {
int M = U.size();
vector<int> w(M);
for (int i = 0; i < M; i++){
g[U[i]].push_back(V[i]);
g[V[i]].push_back(U[i]);
}
dfs(0, -1, 0);
ll onlyA = ask(w);
int S = 0, T = 0;
int l = 0, r = N - 1;
while (l <= r){
int m = (l + r) >> 1;
for (int i = 0; i < M; i++){
w[i] = (i < m);
}
ll res = ask(w);
if (res == onlyA){
S = m;
l = m + 1;
} else r = m - 1;
}
l = S, r = N - 1;
while (l <= r){
int m = (l + r) >> 1;
for (int i = 0; i < M; i++){
w[i] = (i >= m);
}
ll res = ask(w);
if (res == onlyA){
T = m;
r = m - 1;
} else l = m + 1;
}
answer(S, T);
}
/**
12 11 3 5 0 9
0 1
0 2
1 3
1 4
4 5
2 6
2 7
2 8
7 9
7 10
9 11
5 4 3 5 1 3
0 1
1 2
2 3
3 4
*/
# | 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... |