Codeforces Round #383 (Div. 1), problem: (D) Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths Solution in C/C++

#include <bits/stdc++.h>
using namespace std;
#define fo(i,a,b) for(int i=(a);i<(b);i++)
#define MOD 1000000007
#define MP make_pair
#define PB push_back
typedef long long ll;

int N, C, sz[500500], x[500500], c[500500], id[500500], mx[500500], dp[500500], len[1<<22], res[500500], rid[500500];
vector<int> ch[500500];

void go (int i) {
	sz[i] = 1, id[i] = C++, rid[id[i]] = i;
	for (int j : ch[i]) {
		x[j] = x[i] ^ c[j], dp[j] = dp[i] + 1;
		go(j), sz[i] += sz[j];
	}
	mx[i] = C;
}

void dfs (int i, bool k) {
	int b = -1;
	for (int j : ch[i]) if (b == -1 || sz[j] > sz[b]) b = j;
	for (int j : ch[i]) if (j != b) dfs(j, 0);
	if (b != -1) dfs(b, 1);
	for (int j : ch[i]) res[i] = max(res[i], res[j]);

	for (int j : ch[i]) if (j != b) {
		fo(t, id[j], mx[j]) {
			fo(o, 0, 22) if (len[x[rid[t]]^(1<<o)] != -1) {
				res[i] = max(res[i], len[x[rid[t]]^(1<<o)] + dp[rid[t]] - 2*dp[i]);
			}
			if (len[x[rid[t]]] != -1) res[i] = max(res[i], len[x[rid[t]]] + dp[rid[t]] - 2*dp[i]);
		}
		fo(t, id[j], mx[j]) len[x[rid[t]]] = max(len[x[rid[t]]], dp[rid[t]]);
	}

	fo(o, 0, 22) if (len[x[i]^(1<<o)] != -1) res[i] = max(res[i], len[x[i]^(1<<o)] - dp[i]);
	if (len[x[i]] != -1) res[i] = max(res[i], len[x[i]] - dp[i]);
	len[x[i]] = max(len[x[i]], dp[i]);

	if (!k) fo(t, id[i], mx[i]) len[x[rid[t]]] = -1;
}

int main () {
	scanf("%d", &N);
	fo(i, 1, N) {
		int p; char t; scanf("%d %c", &p, &t);
		ch[p-1].PB(i), c[i] = (1<<(t-'a'));
	}
	fo(i, 0, 1<<22) len[i] = -1;
	go(0);
	dfs(0, 1);
	fo(i, 0, N) printf("%d ", res[i]); puts("");
	return 0;
}
 

Advertisement

spot_img

The Preliminary Lunar Science...

Humanity is standing on the threshold of a new...

We Tested Viral Kitchen...

📢 As an Amazon Associate, I earn from qualifying...

John McGahern, A Writing...

Irish literature boasts an extraordinary legacy of storytellers, yet...

Stop Buying Cheap Alternatives...

📢 As an Amazon Associate, I earn from qualifying...

Stock market rebound in...

Indian benchmark equity indices witnessed a decisive rebound during...

I Tried Viral Kitchen...

📢 As an Amazon Associate, I earn from qualifying...

The Preliminary Lunar Science Report for Artemis II is Out!

Humanity is standing on the threshold of a new chapter in deep space exploration, and planetary researchers now have an exciting roadmap in hand....

We Tested Viral Kitchen Gadgets Here Is What You Must Know

📢 As an Amazon Associate, I earn from qualifying purchases.There comes a point when you realise that tolerating a frustrating situation is costing you...

John McGahern, A Writing Life: Biography of literary giant who understood the human condition

Irish literature boasts an extraordinary legacy of storytellers, yet few have captured the delicate nuances of ordinary existence quite like John McGahern. In the...

Stop Buying Cheap Alternatives This Viral Kitchen Gadgets Is the Real Deal

📢 As an Amazon Associate, I earn from qualifying purchases.After putting the Viral Kitchen Gadgets through a proper 30-day real-world test, I can tell...

Stock market rebound in early trade: Sensex jumps over 400 points, Nifty holds above 22,390

Indian benchmark equity indices witnessed a decisive rebound during early trade, bringing substantial relief to investors following consecutive sessions of choppy price action. The...

I Tried Viral Kitchen Gadgets For 30 Days Here Is the Honest Truth

📢 As an Amazon Associate, I earn from qualifying purchases.I stumbled across this while desperately trying to fix a recurring problem in my routine....

Gen Z is spending more on art than ever before. It’s a key piece of the Great Wealth Transfer, UBS says

A dramatic transformation is sweeping through the elite corners of the global art market. Known largely for digital culture and disruptive social trends, Generation...

I Tried Viral Kitchen Gadgets For 30 Days Here Is the Honest Truth

📢 As an Amazon Associate, I earn from qualifying purchases.If you had told me six months ago that a single purchase would change how...

Live-Action Can You Kiss Me First? Series’ Teaser Reveals Theme Song

Fans of romantic manga adaptations have an exciting new television premiere to look forward to, as the upcoming live-action series based on Yamayade's romance...