Python代码求调
查看原帖
Python代码求调
151712
一架飞机楼主2024/8/25 00:50

刚学python,不知道哪里错了。可能是邻接表的问题?

这题没有数据,不会调。

# python a+b
# a,b = map(int,input().split());
# print(a+b)

def add(x, y):
  global He, Nx, To 
  # 在Python中,global关键字用于在函数内部声明一个全局变量,即该变量不属于函数的局部作用域,而是属于全局作用域。使用global关键字可以修改全局作用域中的变量值。
  # 不然会以为是局部变量
  Nx.append(He[x])
  To.append(y)
  He[x] = len(Nx) - 1

def dfs(x, fa):
  global He, Nx, To, dep
  dep[x] = dep[fa] + 1
  i = He[x]
  while i != 0:
    y = To[i]
    if y != fa:
      dfs(y, x)
    i = Nx[i]
  
t = int(input())
for itert in range(t):
  global He, Nx, To, dep
  n = int(input()) 
  He = [0] * (n+5); Nx = [0]; To = [0]; dep = [0] * (n+5)
  for itern in range(n-1):
    a,b = map(int,input().split())
    add(a, b); add(b, a)    
  dfs(1, 0)
  d1 = []; d2 = []
  for i in range(1, n+1):
    if dep[i] % 2 == 0:
      d1.append(i)
    else:
      d2.append(i)
  # print(d1, d2)
  if abs(len(d1) - len(d2)) > 1:
    print(-1)  
    continue
  if n % 2 == 0:
    if d1[0] > d2[0]:
      d1, d2 = d2, d1
  else:
    if len(d1) < len(d2):
      d1, d2 = d2, d1
  for i in range(len(d2)):
    print(d1[i], d2[i], end=' ')
  if len(d1) > len(d2):
    print(d1[-1], end=' ')
  print()
"""
在Python中,print 函数默认在输出之后添加一个换行符。如果你不希望print函数在输出后换行,可以使用end参数来指定不换行。end参数的默认值是\n,表示换行。如果你想要在同一行输出多个内容,可以将end参数设置为一个空字符串''。

"""
2024/8/25 00:50
加载中...