解题思路:
注意事项:
参考代码:
#输入站点数和通道数 n,m=map(int,input().split()) #定义图的邻接矩阵 table=[[0]*(n) for _ in range(n)] #定义是否访问过改节点的矩阵(是为True) flag=[False for _ in range(n)] #将图中相连的边设为1 for _ in range(m): i,j=map(int,input().split()) table[i-1][j-1],table[j-1][i-1]=1,1 u,v=map(int,input().split()) #输入起点后重点(因为是从0开始,所有要减1) u,v=u-1,v-1 #计算成功连通的各个路径的每个节点的访问次数 s_path=[0 for _ in range(n)] def dfs(start,end): global s_path #start==end说明已经找到路径了 if start==end: for i in range(n): #在每次找到连通路径的时候,都会对访问过的点记为True if flag[i]==True: s_path[i]+=1 return for i in range(n): #如果存在边并且没有访问过 if table[start][i]==1 and not flag[i]: #设置为访问过 flag[i]=True #继续遍历 dfs(i,end) #回溯 flag[i]=False dfs(u,v) #如果找到了路径,最后肯定i==end,所以每次end这个节点都会加1,最终结果就是和 #end次数相同的减去end本身 print(s_path.count(s_path[v])-1)
0.0分
1 人评分
Hello, world! (C++代码)浏览:1778 |
简单的a+b (C语言代码)浏览:618 |
DNA (C语言代码)浏览:440 |
判定字符位置 (C语言代码)浏览:849 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:725 |
简单的a+b (C语言代码)浏览:542 |
C二级辅导-统计字符 (C语言代码)浏览:695 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:696 |
简单的a+b (C语言代码)浏览:691 |
字符串对比 (C++代码)浏览:597 |