SDUT 3363 数据结构实验之图论七:驴友计划(最短路)
来源:互联网 发布:muse for mac 编辑:程序博客网 时间:2024/05/18 02:42
Problem Description
做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。
Input
连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,d,其中N(2 <= N <= 500)是城市数目,城市编号从0~N-1,M是城市间高速公路的条数,s是出发地的城市编号,d是目的地的城市编号;随后M行,每行给出一条高速公路的信息,表示城市1、城市2、高速公路长度、收费额,中间以空格间隔,数字均为整数且不超过500,输入数据均保证有解。
Output
在同一行中输出路径长度和收费总额,数据间用空格间隔。
Example Input
14 5 0 30 1 1 201 3 2 300 3 4 100 2 2 202 3 1 20
Example Output
3 40
//最短路问题#include <bits/stdc++.h>#define N 600#define INF 999999//无穷大using namespace std;int dis[N];//保存每个点到起点最短距离int cost[N];//保存到每个点时的花费struct node{ int l;//距离 int p;//花费} Map[N][N];int dijkstra();int vis[N];void start();//进行一些初始化操作int n, m, s,d;int main(){ int t; scanf("%d", &t); while(t--) { int u, v; int a, b; scanf("%d %d %d %d", &n, &m, &s, &d); start(); for(int i = 0; i < m; i++) { scanf("%d%d", &u, &v); scanf("%d%d", &a, &b); Map[u][v].p = Map[v][u].p = b; Map[u][v].l = Map[v][u].l = a; } dijkstra(); } return 0;}void start(){ int i, j; for(i = 0; i < n; i++) { vis[i] = 0; for(j = 0; j < n; j++) { Map[i][j].l = Map[i][j].p = INF;//所有点初始化为距离无穷远, 也就是不连通 } }}int dijkstra(){ for(int i = 0; i < n; i++)//初始化每个点到起始点的距离和花费 { dis[i] = Map[s][i].l; cost[i] = Map[s][i].p; } vis[s] = 1;//标记起始点已被访问 dis[s] = 0; for(int t = 1; t < n; t ++)//一共要找出n - 1个节点 { int Min = INF; int index; for(int i = 0; i < n; i++) { if(!vis[i] && Min > dis[i]) { Min = dis[i]; index = i;//找出距离起始点最近的点 } } vis[index] = 1; for(int j = 0; j < n; j++)//找出的新点会影响与它相邻的点到起始点的最小距离, 所以得修正一下 { if(Map[index][j].l != INF && !vis[j]) { if(dis[index] + Map[index][j].l < dis[j]) { dis[j] = dis[index] + Map[index][j].l; cost[j] = cost[index] + Map[index][j].p; } else if(dis[index] + Map[index][j].l == dis[j]) { if(cost[index] + Map[index][j].p < cost[j]) { cost[j] = cost[index] + Map[index][j].p; } } } } } printf("%d %d\n", dis[d], cost[d]);//输出 return 1;}
阅读全文
0 0
- SDUT 3363 数据结构实验之图论七:驴友计划(最短路)
- SDUT 3363-数据结构实验之图论七:驴友计划(最短路_dijkstra)
- sdut oj3363 数据结构实验之图论七:驴友计划(最短路)
- SDUT 3363 数据结构实验之图论七:驴友计划
- SDUT 3363 数据结构实验之图论七:驴友计划m
- SDUT 3363 数据结构实验之图论七:驴友计划
- SDUT OJ 3363 数据结构实验之图论七:驴友计划
- sdut 3363 数据结构实验之图论七:驴友计划
- SDUT 3363 数据结构实验之图论七:驴友计划
- SDUT-3363-数据结构实验之图论七:驴友计划
- [SDUT](3363)数据结构实验之图论七:驴友计划 ---单源最短路径(图)
- SDUT-数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划 最短路中最小花费
- sdutoj3363 数据结构实验之图论七:驴友计划 (暴力最短路+限制条件)
- sdutoj 3363 数据结构实验之图论七:驴友计划 (暴力深搜最短路)
- 数据结构实验之图论七:驴友计划(最短路径)
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- C程序设计进阶week2
- 设计模式复习
- MySQL高级教程--目录结构01
- ABAP 如何查找事务代码所在程序的用户出口
- MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具
- SDUT 3363 数据结构实验之图论七:驴友计划(最短路)
- Android 常驻进程保活自启动方案总结
- python 爬虫demo
- 约瑟夫环
- DB太大?一键帮你收缩所有DB文件大小(Shrink Files for All Databases in SQL Server)
- Configure Red Hat Enterprise Linux shared disk cluster for SQL Server
- 从4行代码看右值引用
- 编程第八十二天
- 开发的总结