第一题:无向图
def min_path(n, B):
node_list = [0]*(n+1) # 保存节点的距离
for path in B:
# 遍历路径,使后一节点距离值等于前一节点距离值加一
x, y = path
node_list[y]=node_list[x]+1
depth=0
# 找到最大深度
for i in range(1, n+1):
depth=max(depth, node_list[i])
# 计算最短路径,即最深的路径走一遍,其他路径走2遍
return 2*n-2-depth
if __name__ == '__main__':
n=int(input().strip())
B=[]
# 得到路径列表
for i in range(n-1):
A=[int(i) for i in input().strip().split(" ")]
if A[0]>A[1]:
A[0], A[1] = A[1], A[0] # 使得第一个元素小于第二个元素
B.append(A)
B.sort(key=lambda x:x[0])# 按第一个元素排序
result=min_path(n,B)
print(result)
第二题:字符串:
# 思路:确定填充每相邻K个
0
得到的总长度
N,k = [int(i) for i in input().strip().split(" ")]
list=[int(i) for i in input().strip().split(" ")]
zero_ind=[]
for i in range(N):
if list[i]==0:
zero_ind.append(i+1)
zero_ind.append(N+1)
max_len=zero_ind[k-1]
for i in range(k+1, len(zero_ind)):
max_len=max(max_len, zero_ind[i]-zero_ind[i-k-1]-1)
print(max_len)