7-3 树的同构

在这里插入图片描述

#include<stdio.h>
int main(){
    int a,e,n=0,m;
    scanf("%d ",&a);
    char b[a],c[a],d[a];
    for(;n<a;n++){
        scanf("%c ",&b[n]);
        scanf("%c ",&c[n]);
        scanf("%c ",&d[n]);
    }
    scanf("%d ",&e);
    if(a!=e){
        printf("No");
        return 0;
    }
    char f[a],g[a],h[a];
    for(n=0;n<a;n++){
        if(c[n]>45){
            c[n]=b[c[n]-48];
        }
        if(d[n]>45){
            d[n]=b[d[n]-48];
        }
        scanf("%c ",&f[n]);
        scanf("%c ",&g[n]);
        scanf("%c ",&h[n]);
    }
    for(n=0;n<a;n++){
        for(m=0;m<a;m++){
            if(b[n]==f[m])break;
        }
        if(m==a)break;
        if(g[m]>45){
            e=f[g[m]-48];
            if(e==c[n]){
                e=d[n];
            }else if(e==d[n]){
                e=c[n];
            }else break;
        }else{
            if(c[n]==45){
                e=d[n];
            }else if(d[n]==45){
                e=c[n];
            }else break;
        }
        if(h[m]>45){
            h[m]=f[h[m]-48];
        }
        if(e!=h[m])break;
    }
    if(n<a){
        printf("No");
    }else{
        printf("Yes");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值