请问为什么只能得40分
查看原帖
请问为什么只能得40分
781250
blackfish123楼主2022/8/27 16:49
#include<stdio.h>
#include<string.h>
typedef struct node
{
    int L;
    int R;
    int root;
};
int main()
{
    struct node a[100003];
    int n,i,j;
    scanf("%d",&n);
    for(i=1;i<n+1;i++)
    {
        a[i].root=i;
        a[i].L=0;
        a[i].R=0;
    }
    for(i=0;i<n-1;i++)
    {
        int x,y;
        scanf("%d %d",&x,&y);
        if(y==0)
        {
           a[i+2].L=a[x].L;
           a[a[x].L].R=i+2;
           a[x].L=i+2;
           a[i+2].R=x;
        }
        if(y==1)
        {
           a[i+2].R=a[x].R;
           a[a[x].R].L=i+2;
           a[x].R=i+2;
           a[i+2].L=x;
        }
    }
    int m;
    scanf("%d",&m);
    for(i=0;i<m;i++)
    {
        int flag2=0;
        scanf("%d",&flag2);
        a[a[flag2].L].R=a[flag2].R;
        a[a[flag2].R].L=a[flag2].L;
    }
    int flag=0;
    for(i=1;i<n+1;i++)
    {
        if(a[i].L==0)
        {
            flag=i;
        }
    }
    for(i=1;i<n+1;i++)
    {
        if(a[flag].root!=0)
        {
            printf("%d ",a[flag].root);
            flag=a[flag].R;
        }
    }
}

2022/8/27 16:49
加载中...