QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#873972 | #9678. 网友小 Z 的树 | Hanghang# | 0 | 0ms | 10048kb | C++20 | 1.6kb | 2025-01-27 10:45:48 | 2025-01-27 10:45:49 |
Judging History
answer
#include"diameter.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int K=1e5+3;
int Ask(int x,int y,int z){assert(x!=y&&x!=z&&y!=z);return query(x,y,z)/2;}
pair<int,int>find_diameter(int subid,int n)
{
if(n==1)return make_pair(1,1);
if(n==2)return make_pair(1,2);
int X=1,Y=2,Mn=1e9,cnt=0,Z=0;
vector<int>dis(n+1,0),typ(n+1,0);typ[X]=typ[Y]=2;
for(int i=1;i<=n;i++)if(i!=X&&i!=Y)dis[i]=Ask(i,X,Y),Mn=min(Mn,dis[i]);
for(int i=1;i<=n;i++)if(i!=X&&i!=Y&&dis[i]==Mn)typ[i]=1,cnt++;
if(Mn==2)
{
for(int i=1;i<=n;i++)typ[i]=0;
for(int i=1;i<=n;i++)if(i!=X&&i!=Y&&dis[i]==Mn)
{
Z=i;
if(in(X,Y,Z))swap(X,Z);
else swap(Y,Z);
break;
}
typ[X]=typ[Y]=2;typ[Z]=1;
}
else if(cnt==1)Z=find(typ.begin()+1,typ.end(),1)-typ.begin();
else
{
Z=find(typ.begin()+1,typ.end(),1)-typ.begin();
vector<int>val(n+1,0);int Mx=0;
for(int i=1;i<=n;i++)if(typ[i]==1&&i!=Z)
val[i]=Ask(X,Z,i),Mx=max(Mx,val[i]);
if(count(val.begin()+1,val.end(),Mx)<cnt-1)
for(int i=1;i<=n;i++)if(typ[i]==1&&i!=Z&&val[i]==Mx){Z=i;break;}
}
vector<int>val(n+1,0);int Mx=0,ans1=0;
for(int i=1;i<=n;i++)if(!typ[i]||i==X)val[i]=Ask(i,Y,Z),Mx=max(Mx,val[i]);
for(int i=1;i<=n;i++)if((!typ[i]||i==X)&&val[i]==Mx)ans1=i;
vector<int>res(n+1,0);int ans2=Y,W=0;
if(in(Z,ans1,Y))W=Z;
else W=Y;
for(int i=1;i<=n;i++)if(typ[i]!=1&&i!=Y&&i!=ans1)
{
int v=Ask(ans1,W,i);
if(v==val[i]+val[ans1]-1)res[i]=v;
else res[i]=v+1-val[i]+v+1-val[ans1];
Mx=max(Mx,res[i]);
}
for(int i=1;i<=n;i++)if(typ[i]!=1&&i!=ans1&&i!=Y&&res[i]==Mx)ans2=i;
return make_pair(ans1,ans2);
}
詳細信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 10048kb
input:
1 100 25 1 3 2 18 3 8 4 18 5 14 6 22 7 18 8 10 9 11 10 12 11 25 12 16 13 11 14 17 15 17 16 25 17 2 18 20 19 18 20 12 21 1 22 17 23 14 24 1 50 1 37 2 27 3 10 4 25 5 16 6 17 7 10 8 36 9 16 10 6 11 48 12 2 13 28 14 30 15 10 16 44 17 31 18 1 19 6 20 7 21 30 22 42 23 45 24 23 25 27 26 39 27 45 28 48 29 4...
output:
WA
result:
wrong answer Wrong Answer
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 0
Skipped
Dependency #3:
0%
Subtask #5:
score: 0
Skipped
Dependency #4:
0%
Subtask #6:
score: 0
Skipped
Dependency #5:
0%
Subtask #7:
score: 0
Skipped
Dependency #6:
0%
Subtask #8:
score: 0
Skipped
Dependency #7:
0%
Subtask #9:
score: 0
Skipped
Dependency #8:
0%
Subtask #10:
score: 0
Skipped
Dependency #9:
0%
Subtask #11:
score: 0
Skipped
Dependency #1:
0%