Submission #1233882

#TimeUsernameProblemLanguageResultExecution timeMemory
1233882MuhammadSaramBeech Tree (IOI23_beechtree)C++17
9 / 100
57 ms17336 KiB
#include "beechtree.h"
#include <bits/stdc++.h>

using namespace std;

#define all(v) v.begin(), v.end()

vector<int> beechtree(int n, int m, vector<int> p, vector<int> c)
{
	vector<int> v[n];
	vector<pair<int,int>> ch;
	for (int i=n-1;i>0;i--)
		v[p[i]].push_back(c[i]),sort(all(v[i]));
	vector<int> ans(n,1);
	int pr=0;
	for (int i=0;i<n;i++)
	{
		for (int j=0;j+1<v[i].size();j++)
			if (v[i][j]==v[i][j+1]) ans[i]=0;
		if (i && v[i].size()) ch.push_back({v[i].size(),i});
	}
	sort(all(ch));
	ch.push_back({0,0});
	for (int j=0;j+1<ch.size() && ans[0];j++)
	{
		set<int> se;
		for (int i:v[ch[j+1].second]) se.insert(i);
		for (int i:v[ch[j].second])
			if (!se.count(i))
				ans[0]=0;
	}
	
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...