이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#include "icc.h"
const int N = 200;
vector<int> g[N] , par(N , -1) , adj;
int union_find(int x) {
if(par[x] == x) {
return x;
}
par[x] = union_find(par[x]);
return par[x];
}
void union_set(int x, int y) {
x = union_find(x);
y = union_find(y);
if(x == y) {
return;
}
if(g[x].size() < g[y].size()) {
swap(x,y);
}
par[y] = x;
for(auto i : g[y]) {
g[x].push_back(i);
}
g[y].clear();
}
mt19937 rng(time(NULL));
void run(int n) {
for(int i=1;i<=n;i++) {
par[i] = i;
g[i].push_back(i);
}
for(int p=0;p<n - 1;p++) {
set<int> s;
adj.clear();
for(int i=1;i<=n;i++) {
s.insert(union_find(i));
}
for(auto i : s) {
adj.push_back(i);
}
shuffle(adj.begin(), adj.end() , rng);
vector<int>a,b;
for(int mask = 0;mask < 8;mask++) {
vector<int> fi, se;
for(int i=0;i<(int)adj.size();i++) {
if(i & (1 << mask)) {
for(auto j : g[adj[i]]) {
fi.push_back(j);
}
}
else {
for(int j : g[adj[i]]) {
se.push_back(j);
}
}
}
if(query(fi.size(), se.size(), fi.data(), se.data())) {
a = fi;
b = se;
break;
}
}
int l = 0, r = a.size();
int res1 = -1 , res2 = -1;
sort(a.begin(), a.end());
sort(b.begin(), b.end());
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
while(l < r) {
int mid = (l+r)/2;
vector<int> v;
for(int i=0;i<=mid;i++) {
v.push_back(a[i]);
}
if(query(v.size(), b.size(), v.data(), b.data())) {
res1 = v.back();
r = mid;
}
else {
l = mid+1;
}
}
l = 0, r = b.size();
while(l < r) {
int mid = (l+r)/2;
vector<int> v;
for(int i=0;i<=mid;i++) {
v.push_back(b[i]);
}
if(query(v.size(), a.size(), v.data(), a.data())) {
res2 = v.back();
r = mid;
}
else {
l = mid+1;
}
}
union_set(res1, res2);
setRoad(res1, res2);
}
}
# | 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... |