| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1233948 | MuhammadSaram | 참나무 (IOI23_beechtree) | C++20 | 78 ms | 58184 KiB |
#include "beechtree.h"
#include <bits/stdc++.h>
using namespace std;
#define all(v) v.begin(), v.end()
const int M = 2e5 + 1;
vector<int> nei[M],v[M],ans;
bool b[M];
void dfs(int u)
{
if (nei[u].empty()) ans[u]=1;
int cnt=0,x;;
for (int i:nei[u])
{
if (nei[i].size()) cnt++,x=i;
dfs(i);
}
if (!cnt) ans[u]=b[u]=1;
set<int> se;
for (int i:v[u]) se.insert(i);
if (se.size()!=v[u].size())
{
ans[u]=0;
return;
}
if (cnt>1 or !b[x] or !ans[x]) return;
ans[u]=1;
for (int i:v[x])
if (!se.count(i)) ans[u]=0;
}
vector<int> beechtree(int n, int m, vector<int> p, vector<int> c)
{
for (int i=n-1;i>0;i--)
nei[p[i]].push_back(i),v[p[i]].push_back(c[i]);
ans=vector<int>(n);
dfs(0);
return ans;
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
