#当时没有考虑n==1的情况,以及判断没有路径的情况, 只有63% #不知道现在加上能不能ac def dfs(res,num,fg,i,cnt):     if sum(fg) == 2 and fg[0] == 1 and  num[i][0] != -1:  #只剩两个城市 ,起点还未到达, 且可以返回起点         res.append(cnt+num[i][0])         return      if fg[0] == 0:      #无法回到起点,起点被遍历两遍         return     for kk in range(n):         if num[i][kk] != -1 and fg[kk] > 0: #有路且去向城市未访问过             fg[i] -= 1             dfs(res,num,fg,kk,cnt+num[i][kk])  #             fg[i] += 1     return   n = int(input()) if n ==1:        #考虑n==1的情况     print(0) else:     m = int(input())     num =[[ -1 for i in range(n)] for j in range(n)]     for k in range(m):  #构造邻接矩阵         i,j,d = [int(tmp) for tmp in input().split(' ')]         num[i][j] = d         num[j][i] = d     fg = [1]*n         #改点是否访问标志     fg[0] = 2     #起点需访问两遍     res = []     dfs(res,num,fg,0,0)     if len(res) == 0: #考虑没有路径的情况         print(-1)     else:         print(min(res))
点赞 1

相关推荐

秋盈丶:后续:我在宿舍群里和大学同学分享了这事儿,我好兄弟气不过把他挂到某脉上了,10w+阅读量几百条评论,直接干成精品贴子,爽
点赞 评论 收藏
分享
只有一个苍穹外卖外加正在看黑马点评,可以找小厂实习吗,还有我的简历有什么大问题吗
Java抽象小篮子:感觉有点熟悉,问题1是学历,2是没实习经历,3是专业技能写得太少太少了(怎么写可以看我置顶帖),4是仅这一个项目找实习不够看。拷打完毕,简历怎么写可以看我置顶帖子
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务