243892026-02-10 20:33:10abcdTom és Jerry 3cpp17Elfogadva 50/5072ms4436 KiB
#include <bits/stdc++.h>
using namespace std;

const int maxn=30005;
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(){
    ios::sync_with_stdio(false);cin.tie(0);
    int t;cin>>t;
    while(t--){
        int n,ts,js,k;cin>>n>>ts>>js>>k;
        vector<int> dt(n+1),dj(n+1),da(n+1);
        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]<k&&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>k*2)cout<<"NEM\n";
        else cout<<"IGEN\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/02ms1084 KiB
2Elfogadva0/02ms1076 KiB
3Elfogadva5/51ms1076 KiB
4Elfogadva1/12ms1076 KiB
5Elfogadva1/12ms1076 KiB
6Elfogadva1/12ms1076 KiB
7Elfogadva1/12ms1136 KiB
8Elfogadva1/12ms1076 KiB
9Elfogadva1/12ms1268 KiB
10Elfogadva1/12ms1076 KiB
11Elfogadva2/22ms1076 KiB
12Elfogadva2/22ms1076 KiB
13Elfogadva1/12ms1076 KiB
14Elfogadva2/271ms1900 KiB
15Elfogadva2/259ms1676 KiB
16Elfogadva2/271ms1932 KiB
17Elfogadva2/271ms4436 KiB
18Elfogadva2/272ms2100 KiB
19Elfogadva2/270ms2308 KiB
20Elfogadva2/250ms4060 KiB
21Elfogadva2/259ms1620 KiB
22Elfogadva2/259ms1592 KiB
23Elfogadva3/370ms4404 KiB
24Elfogadva2/271ms2076 KiB
25Elfogadva3/368ms2100 KiB
26Elfogadva2/271ms4400 KiB
27Elfogadva2/261ms1664 KiB
28Elfogadva3/361ms1740 KiB