3049: 树上的数 (CSP-S 2019 D1T3)优快云博客

#include<iostream>

#include<cstdio>

#include<cstring>

#include<algorithm>

using namespace std;

const int N=2e3+100;

int T,n,tot;

int head[N],ver[2*N],Next[2*N];

int rev[N],pre[N],cnt1[N],cnt2[N],cnt3[N],from[N],to[N],p[N][N],header[N][N],tailer[N][N];

bool pd[N];

void add(int x,int y)

{

    ver[++tot]=y,Next[tot]=head[x],head[x]=tot;

    ver[++tot]=x,Next[tot]=head[y],head[y]=tot;

}

void check(int x,int root)//root就是数字的起点

{

    for(int i=head[x],y=ver[i];i;i=Next[i],y=ver[i])

        if(y!=pre[x])

        {

            pre[y]=x,pd[y]=1;

            if(x!=root)

            {

                if(p[x][y]==x || !p[x][y])

                    pd[y]=0;

                if(tailer[x][y]==from[x] && header[x][pre[x]]==to[x] && cnt1[x]*2+cnt2[x]+cnt3[x]-2>0)

                    pd[y]=0;

                if(tailer[x][y]==pre[x])

                    pd[y]=0;

            }//中间边

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值