03-树1 树的同构 (25 分) (python3)

def inputL():
    L=[]
    n=int(input())
    for i in range(n):
        a=list(input().split())
        L.append(a)
    return n,L

n1,L1=inputL()
n2,L2=inputL()


def findline(L):
    LC=[]
    for i in range(len(L)):
        l=[]
        if (L[i][1]=='-')&(L[i][2]=='-'):
            l=makeline(L,i)
            LC.append(l)
    return LC
    
def makeline(L,a):
    l=[]
    l.append(L[a][0])
    L.append([None,None,None])
    while True:
        for i in range(len(L)):
            if((L[i][1]==str(a))|(L[i][2]==str(a))):
                l.append(L[i][0])
                a=i
                break
        if L[i]==[None,None,None]:
            break
    return l

def compare(L1,L2):
    a=[]
    if len(L1)!=len(L2):
        print('No')
    else:
        for i in L1:
            for j in L2:
                if i==j:
                    a.append(i)
        if(len(a)==len(L1)):
            print("Yes")
        else:
            print("No")
    
if n1!=n2:
    print('No')
else: 
    L1N=findline(L1)
    L2N=findline(L2)
    compare(L1N,L2N)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值