QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#873963#9678. 网友小 Z 的树Hanghang#0 1ms8124kbC++201.6kb2025-01-27 10:40:232025-01-27 10:40:24

Judging History

你现在查看的是最新测评结果

  • [2025-01-27 10:40:24]
  • 评测
  • 测评结果:0
  • 用时:1ms
  • 内存:8124kb
  • [2025-01-27 10:40:23]
  • 提交

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){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: 1ms
memory: 8124kb

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%