c++递归实现关于无向图中任意两点的最短距离
来源:互联网 发布:网络分线器怎样插网线 编辑:程序博客网 时间:2024/05/22 04:42
输入说明:第一个输入参数为测试样例个数
第二个输入参数n为图的边数
接下来的n行输入为x,y,length,表示节点x到节点y的距离length
#include <string.h> #include <iostream>#include <memory.h>#include <string>#include <vector>using namespace std; bool visited[101];int min_length = 1000000;int start;int enddes; struct Node{int child;int des;Node(int a,int b){this -> child = a;this -> des = b;}Node(){}};vector<Node> data[101];void dfs(int node,int length){visited[node] = true;if(node == enddes - 1){if(length < min_length)min_length = length;return;}for(int i = 0;i < data[node].size();i++){if(!visited[data[node][i].child]){visited[data[node][i].child] = true;length += data[node][i].des;dfs(data[node][i].child,length);length -= data[node][i].des;visited[data[node][i].child] = false;}}}int main() { int c;cin >> c;while(c--){int n;int st,ed,des;memset(visited,false,sizeof(visited));cin >> n;for(int i = 0;i < n;i++){cin >> st >> ed >> des;data[st - 1].push_back(Node(ed - 1,des));//因为是无向图,所以两节点互为父子节点data[ed - 1].push_back(Node(st - 1,des));}cin >> start >> enddes;int length = 0;dfs(start - 1,length);for(int i = 0;i < n;i++)data[i].clear();cout << min_length << endl;min_length = 1000000;} return 0; }
- c++递归实现关于无向图中任意两点的最短距离
- 已知有向图任意两点的最短距离,求最小边数
- Matalab代码 实现 Dijkstra求 有向图及无向图之间,任意两点之间的最短路径
- 有向图 两点间的最短距离
- 迪杰斯特拉算法处理无向图中最短路径的(dijkstra)Java实现(指定两点,求最短距离及路径)
- 无向树的直径(最长的两点间最短距离)
- Floyd 任意两点间的最短距离 dp
- HDU 4460 求任意两点最短距离的最大距离
- 运用Floyd算法求得带权有向图任意两点间的最短路径C/C++
- 经典c程序(0038)---矩阵中两点最短距离BFS
- 寻找最短距离的两点
- 计算无向无权图中两点间所有的最短路径
- 我对弗洛伊德算法的理解(求图中任意两点之间最短距离)
- 弗洛伊德(Floyd)算法求任意两点间的最短距离
- 图中指定两点间的最短距离
- Floyd-Warshall算法--求任意两点最短距离
- 图论之两点间最短距离
- acm_floyd任意两点的最短路(最简单无脑的最短路算法)
- mysqldump:unknown option '--no-beep'错误解决办法
- 详细配置CKEditor 和 CKFinder 插件上传图片
- cryptopp++的配置
- BufferedWriter和BufferedReader
- sql server 将列的不同值转化为不同行
- c++递归实现关于无向图中任意两点的最短距离
- C语言链表学习
- 关于多类仪器协同工作的LabVIEW架构(1)
- 如何在PowerDesigner下建索引 PD version 15
- 实例详解如何实现来电拦截及拦截后的提示音
- 山东理工大学ACM平台题答案 C语言实验——分割整数1175
- 装饰设计模式
- print himself in c
- C语言宏定义