PAT 1030 最短路径
来源:互联网 发布:gpa标准加权算法 编辑:程序博客网 时间:2024/05/16 05:29
//1030 最短路径#include <iostream>#include <vector>using namespace std;int Dist[505 ][505] = {0};int Cost[505][505] = {0};int N, M, S, D;int CurrDis = 0;int ShortDis = 10000;int visit[505] = {0};vector<int> CurRoad;vector<int> Road;int TotalCost = 10000;int CurCost = 0;void dfs( int curr){int i;if( curr == D){if (CurrDis < ShortDis){ShortDis = CurrDis;Road.clear();for (i = 0;i<CurRoad.size();i++){Road.push_back(CurRoad[i]);}TotalCost = CurCost;}else if(CurrDis == ShortDis){if (TotalCost > CurCost){TotalCost = CurCost;Road.clear();for (i = 0;i<CurRoad.size();i++){Road.push_back(CurRoad[i]);}}}return;}for (i = 0;i<N;i++){if (Dist[i][curr]> 0 && i!= curr && visit[i] == 0){CurrDis += Dist[i][curr];visit[i] = 1;CurRoad.push_back(i);CurCost += Cost[i][curr];dfs(i);visit[i] = 0;CurrDis -= Dist[i][curr];CurRoad.pop_back();CurCost -= Cost[i][curr];}}}int main(){cin >> N >> M >> S >> D;int i;int City1, City2, Dis, Cos;for (i = 0;i< M;i++){cin >> City1 >> City2 >> Dis >> Cos;Dist[City1][City2] = Dis;Dist[City2][City1] = Dis;Cost[City1][City2] = Cos;Cost[City2][City1] = Cos;}dfs(S);cout << S << " ";for (i = 0; i<Road.size();i++){cout << Road[i] << " ";}cout << ShortDis << " "<<TotalCost;return 0;}
0 0
- PAT 1030 最短路径
- pat-1087【最短路径】
- 【PAT 1030】Travel Plan 最短路径Dijkstra
- PAT:图的最短路径
- 【PAT】1003. Emergency (25) DFS 最短路径及最短路径数
- 【PAT 1072】 Gas Station 最短路径Dijsktra
- PAT (Advanced Level) 1003. Emergency (25) 最短路径 DFS
- PAT 1003. Emergency (25)<最短路径,最大搜救人数>
- *浙大PAT甲级 1072 最短路径dij
- PAT 1072. Gas Station (30)(多个点的最短路径)
- PAT 紧急救援 (最短路径变形)
- PAT-A1111. 图-Dijkstra输出最短路径
- PAT 1018 Public Bike Management(最短路径+DFS)
- 最短路径算法
- 最短路径算法
- 最短路径理解
- 最短路径算法
- 最短路径算法
- 基础,基础,还是基础之JAVA基础
- 自适应网页设计(Responsive Web Design)
- maven的安装及sts创建项目与jetty插件的配置
- C# 事件和Unity3D
- 可变参数列表函数实现
- PAT 1030 最短路径
- OJ 28之判断是否是整数
- String 变量必须赋初值
- 分治策略
- to_char的详细用法
- Android Studio Gradle 缓存文件夹设置
- java访问接口
- Java的数据类型
- lua utf8 len sub