一个关于python的疑问
查看原帖
一个关于python的疑问
86971
TRZ_2007楼主2025/8/7 15:36

RT,以前是 C++ 选手
下面的 python 代码翻译成 C++ 之后可以通过本题
但是利用 python 运行一下代码会发生错误(在代码中有标注)
求解释,必关

n = int(input())
mp = [{'lnxt':0,'rnxt':0,'out':1}] * (n + 5)
mp[1] = {'lnxt':0,'rnxt':n + 1,'out':1}
mp[0] = {'lnxt':-1,'rnxt':1,'out':0}

for i in range(2,n + 1):
    k,p = map(int,input().split())
    if p == 0:
        ln = mp[k]['lnxt']
        mp[i]['rnxt'] = k
        mp[ln]['rnxt'] = i
        mp[i]['lnxt'] = ln
        #
        mp[k]['lnxt'] = i
        #这行代码运行的时候不仅会更改 mp[k]['lnxt'] 的值,而且还会更改 mp[i]['lnxt'] 的值,p = 1 的情况亦然
    else:
        rn = mp[k]['rnxt']
        mp[i]['lnxt'] = k
        mp[rn]['lnxt'] = i
        mp[i]['rnxt'] = rn
        mp[k]['rnxt'] = i

m = int(input())
for i in range(m):
    x = int(input())
    mp[x]['out'] = 0

id = 0
for i in range(1,n + 1):
    if mp[i]['lnxt'] == 0:
        id = i

while id != n + 1:
    if mp[id]['out'] == 1:
        print(id,end = ' ')
    id = mp[id]['rnxt']
2025/8/7 15:36
加载中...