蒟蒻求助
查看原帖
蒟蒻求助
413989
__SEIMEI__楼主2020/10/31 21:45

跟着题解思路做的,前三个WA,后面RE,MLE.dalao帮我看一下哪里有问题叭,,(暴力都能拿30分啊喂

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,T,pos,poss,j,v1,v2,x;
int m,i,maxn,maxnn;
int main() 
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&n,&m);
		long long a[n+1];
		bool pd[n+1][n+1];
		memset(pd,0,sizeof(pd));
			for(i=1;i<=n;++i)
			{
				scanf("%d",&a[i]);
			}	
		if(n==1) printf("%d\n",1);
		else
		{
			for(i=1;i<n;++i)
			{
				scanf("%d%d",&v1,&v2);
				pd[v1][v2]=1;
				pd[v2][v1]=1;
			}
			maxn=a[n];pos=n;
			for(int x=n-1;x>=1;--x)
			{
				if(a[x]>=maxn)
				{
					maxn=a[x];
					pos=x;
				}
			}
			maxnn=-1e18;
			for(i=n;i>=1;--i)
				if(pd[pos][i]&&a[i]>=maxnn&&i!=pos) 
				{
					maxnn=a[i]; 
					poss=i;
				}
			if(maxn-maxnn>m) printf("%d\n",pos);
			else if(maxn-maxnn==m) printf("%d\n",min(pos,poss));
			else if(m-(maxn-maxnn)%2!=0) printf("%d\n",max(pos,poss));
			else if(m-(maxn-maxnn)%2==0) printf("%d\n",min(pos,poss));
		}
			
	}
	return 0; 
}
2020/10/31 21:45
加载中...