2019牛客夏休み多校訓練キャンプ(第一回)、A題(デカルトの木)

913 ワード

この二つのデカルトの木はkey=1から同格になる最大の子木を求めます.コードは以下の通りです
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn=1e5+5;
int a[maxn],b[maxn],n;
int f1[maxn],l1[maxn],r1[maxn],root1;
int f2[maxn],l2[maxn],r2[maxn],root2;
 
int build(int *arr,int *f,int *l,int *r)
{
    for(int i=1;i<=n;++i)    f[i]=l[i]=r[i]=0;
    stack st;
    int rt,last;
    for(int i=1;i<=n;++i)
    {
        last=0;
        while(!st.empty())
        {
            if(arr[st.top()]
TIPS:デカルトの木とテーマの性質によって、柔軟に同じ構成の条件を見つけます.