248032026-02-15 17:56:00sarminTúra (75 pont)cpp17Accepted 75/7556ms7988 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// const ll MOD = 1e9+7;

#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()

void solve() {
	int n; cin >> n;
	vector<int> signs(n);
	vector<vector<int>> g(n);
	for (int i = 0; i < n; i++) {
		cin >> signs[i];
	}
	
	int u, v;
	for (int i = 0; i < n-1; i++) {
		cin >> u >> v;
		u--; v--;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	
	vector<vector<int>> res;
	for (int i = 0; i < n; i++) {
		vector<int> keres;
		for (int j : g[i]) {
			if (signs[i] == -1 && signs[j] == -1) {
				vector<int> x = {i+1, j+1};
				res.push_back(x);
			}
			if (signs[i] == 1 && signs[j] == -1) keres.push_back(j);
		}
		if (keres.size() > 1) {
			vector<int> x = {keres[0]+1, i+1, keres[1]+1};
			res.push_back(x);
		}
	}
	if ((int) res.size() == 0) {
		cout << "IGEN\n";
	} else {
		cout << "NEM\n";
		cout << res[0].size() << "\n";
		for (int i : res[0]) cout << i << " ";
		cout << "\n";
	}
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t; cin >> t;
    while (t--) solve();

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base75/75
1Accepted0/01ms316 KiB
2Accepted0/01ms500 KiB
3Accepted6/61ms316 KiB
4Accepted3/34ms564 KiB
5Accepted3/34ms564 KiB
6Accepted4/44ms564 KiB
7Accepted4/44ms532 KiB
8Accepted4/44ms580 KiB
9Accepted2/243ms2108 KiB
10Accepted2/243ms2108 KiB
11Accepted2/243ms2024 KiB
12Accepted2/243ms2144 KiB
13Accepted2/243ms2108 KiB
14Accepted3/343ms2112 KiB
15Accepted2/243ms2304 KiB
16Accepted2/243ms2124 KiB
17Accepted2/243ms2116 KiB
18Accepted2/241ms2128 KiB
19Accepted3/339ms2108 KiB
20Accepted2/239ms2316 KiB
21Accepted2/243ms2112 KiB
22Accepted3/346ms2344 KiB
23Accepted2/250ms7988 KiB
24Accepted2/252ms7480 KiB
25Accepted2/252ms4556 KiB
26Accepted2/248ms4868 KiB
27Accepted2/252ms4584 KiB
28Accepted2/246ms4804 KiB
29Accepted2/256ms4568 KiB
30Accepted2/246ms4848 KiB
31Accepted2/250ms4816 KiB
32Accepted2/256ms4556 KiB