QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#312459 | #5015. 树 | zyxawa | Compile Error | / | / | C++14 | 949b | 2024-01-23 21:59:39 | 2024-01-23 21:59:39 |
Judging History
answer
#include<bits/stdc++.h>
#include"tree.h"
using namespace std;
mt19937 rnd(time(0));
vector <int> G[1001];
int rt,dep[1001],lca[1001][1001],fa[1001];
#define dis(u,v) (dep[u]+dep[v]-2*dep[lca[u][v]])
void init(int x,int y){
fa[x]=y,dep[x]=dep[y]+1,lca[x][x]=x;
for(int i=1;i<=n;i++) if(fa[i]||i==rt) lca[x][i]=lca[i][x]=lca[y][i];
}
void solve(int x,vector <int> s){
if(s.size()==1) return init(x,s[0]);
int mid=s.size()/2;
vector <int> now,ans;
shuffle(begin(s),end(s),rnd);
for(int i=0;i<mid;i++) now.push_back(s[i]);
int val=ask(x,now);
for(auto i:s){
int res=mid;
for(auto j:now) res+=dis(i,j);
if(res==val) ans.push_back(i);
}
solve(x,ans);
}
void solver(int n,int a,int b){
rt=rnd()%n+1;
for(int i=1;i<=n;i++) G[i!=rt?ask(rt,{i}):0].push_back(i);
for(auto i:G[1]) init(i,rt);
for(int i=2;!G[i].empty();i++) for(auto j:G[i]) solve(j,G[i-1]);
for(int i=1;i<=n;i++) if(i!=rt) answer(i,fa[i]);
}
Details
implementer.cpp: In function ‘void regduj260135279::init()’: implementer.cpp:32:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 32 | scanf("%d",&n); | ~~~~~^~~~~~~~~ implementer.cpp:45:30: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 45 | scanf("%d%d",&u,&v); | ~~~~~^~~~~~~~~~~~~~ answer.code: In function ‘void init(int, int)’: answer.code:10:24: error: ‘n’ was not declared in this scope 10 | for(int i=1;i<=n;i++) if(fa[i]||i==rt) lca[x][i]=lca[i][x]=lca[y][i]; | ^