80分求助,第三个测试点WA掉了QAQ
查看原帖
80分求助,第三个测试点WA掉了QAQ
270410
Sapphire_cx楼主2020/6/27 00:43
#include <stdio.h>
struct Node
{
    int left,right;
    int alive;
}a[100010];

int main()
{
    int n,k,p,m,x,g=0;
    int i=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        a[i].left=-1;
        a[i].right=-1;
        a[i].alive=1;
    }
    for(i=2;i<=n;i++)
    {
        scanf("%d %d",&k,&p);
        if(p==0)
        {
            if(a[k].left==-1)
            {
                a[k].left=i;
                a[i].right=k;
            }
            else
            {
                a[a[k].left].right=i;
                a[i].left=a[k].left;
                a[k].left=i;
                a[i].right=k;
            }

        }
        else
        {
            if(a[k].right==-1)
            {
                a[k].right=i;
                a[i].left=k;
            }
            else
            {
                a[a[k].right].left=i;
                a[i].right=a[k].right;
                a[k].right=i;
                a[i].left=k;

            }

        }
    }
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        scanf("%d",&x);
        if(a[x].alive==1)
        {
            a[a[x].left].right=a[x].right;
            a[a[x].right].left=a[x].left;
            a[x].alive=0;
        }

    }
    for(i=1;i<=n;i++)
    {

        if(a[i].left==-1)
        {
            break;
        }
    }
    while(a[i].right!=-1)
    {
        printf("%d ",i);
        i=a[i].right;
    }
    printf("%d",i);

    return 0;

}
2020/6/27 00:43
加载中...