WA#4 75pts
查看原帖
WA#4 75pts
756179
so_find_skind楼主2024/4/9 13:30
#include<bits/stdc++.h>
using namespace std;
int T;
int n,u,v,a[2000005],mx,li,my,lj;
long long m;
int main(){
    cin>>T;
    while(T--){
        cin>>n>>m;
        memset(a,0,sizeof(a));
        mx=my=li=lj=0;
        for(int i=1;i<=n;i++){
            scanf("%d",a+i);
            if(a[i]>mx){
                mx=a[i];
                li=i;
            }
        }
        for(int i=1;i<n;i++){
            scanf("%d%d",&u,&v);
            if(u==li)
                if(a[v]>my){
                    my=a[u];
                    lj=v;
                }
            if(v==li)
                if(a[u]>my){
                    my=a[u];
                    lj=u;
                }
        }
        if(!lj){
            cout<<li<<"\n";
            continue;
        }
        if(a[li]-a[lj]>m)
            cout<<li;
        else if(a[li]-a[lj]==m)
            cout<<min(li,lj);
        else
            if((m-(a[li]-a[lj]))%2==0)
                cout<<min(li,lj);
            else
                cout<<max(li,lj);
        cout<<"\n";
    }
    return 0;
}

做法:输入后先得出最大与最大附近的最大,然后直接判断

但是莫名其妙WA#4,看题解貌似也没啥问题

不过试过了,不是因为没有 特判1 或是 没有建图

2024/4/9 13:30
加载中...