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']