243782026-02-10 19:00:43abcdTom és Jerry 3cpp17Wrong answer 24/50167ms1912 KiB
#include <bits/stdc++.h>
using namespace std;

/*
3
4 1 3 1
1 2 1 3 3 4
5 2 5 1 1 2 1 3 3 4 4 5
4 4 2 2 1 4 1 2 1 3
*/

const int maxn=20001;
vector<int> adj[maxn];

void dfs(int v,int pa,int dis,vector<int>& d){
    d[v]=dis;
    for(int to:adj[v]){
        if(to!=pa)dfs(to,v,dis+1,d);
    }
}

int main(){
    int t;cin>>t;
    while(t--){
        int n,ts,js,k;cin>>n>>ts>>js>>k;
        vector<int> dt(maxn),dj(maxn),da(maxn);
        for(int i=1;i<=n;i++){
            adj[i].clear();
        }
        for(int i=1;i<n;i++){
            int a,b;cin>>a>>b;
            adj[a].push_back(b);
            adj[b].push_back(a);
        }
        dfs(ts,-1,0,dt);
        dfs(js,-1,0,dj);
        bool yes=false;
        for(int i=1;i<=n;i++){
            if(dj[i]+1<dt[i]&&dt[i]>k)yes=true;
        }
        if(!yes){
            cout<<"IGEN\n";continue;
        }
        int a=1;
        for(int i=1;i<=n;i++){
            if(dt[i]>dt[a])a=i;
        }
        dfs(a,-1,0,da);
        int mx=0;
        for(int i=1;i<=n;i++){
            mx=max(mx,da[i]);
        }
        if(mx/2>k)cout<<"NEM\n";
        else cout<<"IGEN\n";
    }
}
SubtaskSumTestVerdictTimeMemory
base24/50
1Accepted0/01ms1268 KiB
2Accepted0/02ms1268 KiB
3Wrong answer0/52ms1272 KiB
4Accepted1/13ms1076 KiB
5Accepted1/14ms1268 KiB
6Wrong answer0/13ms1076 KiB
7Wrong answer0/13ms1272 KiB
8Accepted1/13ms1076 KiB
9Accepted1/13ms1076 KiB
10Wrong answer0/13ms1076 KiB
11Accepted2/23ms1076 KiB
12Wrong answer0/23ms1076 KiB
13Wrong answer0/13ms1076 KiB
14Accepted2/2158ms1736 KiB
15Accepted2/2142ms1460 KiB
16Accepted2/2167ms1648 KiB
17Runtime error0/22ms1260 KiB
18Accepted2/2160ms1676 KiB
19Accepted2/2158ms1844 KiB
20Runtime error0/22ms1076 KiB
21Accepted2/2143ms1440 KiB
22Accepted2/2141ms1588 KiB
23Runtime error0/32ms1076 KiB
24Accepted2/2159ms1844 KiB
25Wrong answer0/3157ms1912 KiB
26Runtime error0/22ms1076 KiB
27Accepted2/2143ms1332 KiB
28Wrong answer0/3142ms1588 KiB