关键是在建立地址映射的基础上,将地址值排成列表,对列表进行反转。最后一个测试点注意有效地址的个数即可。
s=list(map(int,input().split()))
first,n,k=s[0],s[1],s[2]
data,next,lst=[0]*100005,[0]*100005,[0]*100005 #存val,下一个地址,顺序
for i in range(n):
s=list(map(int,input().split()))
data[s[0]]=s[1]
next[s[0]]=s[2]
cnt=0
#链接
while first!=-1:
lst[cnt]=first
cnt+=1
first=next[first]
# print(lst[:8])
#逆转
for i in range(0,cnt-cnt%k,k):
# print(i)
lst[i:i+k]=lst[i:i+k][::-1]
# print(lst[:8])
#输出
for i in range(cnt-1):
print('%05d %d %05d'%(lst[i],data[lst[i]],lst[i+1]))
print('%05d %d -1'%(lst[cnt-1],data[lst[cnt-1]]))