#include "icc.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
#define pii pair<int,int>
#define fi first
#define se second
int s[2][maxn],sz[2],par[maxn],n;
vector<int> ver[maxn],ss[maxn],cur[2];
int findpar(int u){
if(u!=par[u]) return par[u]=findpar(par[u]);
return u;
}
void unions(int u,int v){
u=findpar(u);v=findpar(v);
par[v]=u;
for(int x:ver[v]) ver[u].push_back(x);
ver[v].clear();
}
void add(int t,int x){
for(int v:ver[x]) s[t][sz[t]++]=v;
}
pii cal(){
for(int i=0;i<n;i++) ss[i].clear();
int len=1;
for(int i=1;i<=n;i++){
if(ver[i].empty()) continue;
ss[0].push_back(i);
}
while(true){
sz[0]=sz[1]=0;
for(int i=0;i<len;i++){
int ssz=(int)ss[i].size();
for(int j=0;j<(ssz+1)/2;j++) add(0,ss[i][j]);
for(int j=(ssz+1)/2;j<ssz;j++) add(1,ss[i][j]);
}
if(query(sz[0],sz[1],s[0],s[1])) break;
int prelen=len;
for(int i=0;i<prelen;i++){
int ssz=(int)ss[i].size();
if(ssz==1) continue;
for(int j=(ssz+1)/2;j<ssz;j++){
ss[len].push_back(ss[i].back());
ss[i].pop_back();
}
len++;
}
}
cur[0].clear();cur[1].clear();
for(int i=0;i<sz[0];i++) cur[0].push_back(s[0][i]);
for(int i=0;i<sz[1];i++) cur[1].push_back(s[1][i]);
int l=0,r=sz[0]-1,f0=cur[0][0],f1=cur[1][0];
while(l<r){
int mid=(l+r)>>1;sz[0]=0;
for(int i=l;i<=mid;i++) s[0][sz[0]++]=cur[0][i];
if(query(sz[0],sz[1],s[0],s[1])) r=mid;
else l=mid+1;
f0=cur[0][l];
}
sz[0]=1;s[0][0]=f0;
l=0;r=sz[1]-1;
while(l<r){
int mid=(l+r)>>1;sz[1]=0;
for(int i=l;i<=mid;i++) s[1][sz[1]++]=cur[1][i];
if(query(sz[0],sz[1],s[0],s[1])) r=mid;
else l=mid+1;
f1=cur[1][l];
}
return {f0,f1};
}
void run(int N){
n=N;
for(int i=1;i<=n;i++){ver[i].push_back(i);par[i]=i;}
for(int i=1;i<n;i++){
pii x=cal();
setRoad(x.fi,x.se);
unions(x.fi,x.se);
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
468 KB |
Ok! 94 queries used. |
2 |
Correct |
6 ms |
468 KB |
Ok! 104 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
31 ms |
436 KB |
Ok! 532 queries used. |
2 |
Correct |
46 ms |
468 KB |
Ok! 642 queries used. |
3 |
Correct |
36 ms |
488 KB |
Ok! 625 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
102 ms |
616 KB |
Ok! 1421 queries used. |
2 |
Correct |
116 ms |
492 KB |
Ok! 1600 queries used. |
3 |
Correct |
113 ms |
468 KB |
Ok! 1618 queries used. |
4 |
Correct |
107 ms |
632 KB |
Ok! 1494 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
112 ms |
492 KB |
Ok! 1439 queries used. |
2 |
Correct |
107 ms |
500 KB |
Ok! 1417 queries used. |
3 |
Correct |
107 ms |
504 KB |
Ok! 1563 queries used. |
4 |
Correct |
106 ms |
496 KB |
Ok! 1511 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
114 ms |
504 KB |
Ok! 1556 queries used. |
2 |
Correct |
111 ms |
496 KB |
Ok! 1519 queries used. |
3 |
Correct |
127 ms |
500 KB |
Ok! 1602 queries used. |
4 |
Correct |
113 ms |
492 KB |
Ok! 1568 queries used. |
5 |
Correct |
104 ms |
632 KB |
Ok! 1463 queries used. |
6 |
Correct |
113 ms |
500 KB |
Ok! 1549 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
110 ms |
468 KB |
Ok! 1587 queries used. |
2 |
Correct |
122 ms |
496 KB |
Ok! 1609 queries used. |