HDU 3790 最短生成树 (最短路)
Problem Description
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。
Input
输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。
(1<n<=1000, 0<m<100000, s != t)
Output
输出 一行有两个数, 最短距离及其花费。
Sample Input
3 2
1 2 5 6
2 3 4 5
1 3
0 0
Sample Output
9 11
分析:
简单的最短路径问题,但是我们需要额外考虑的就是,最短路径可能不止一条,所以在找到最短路径的同时,还要保证花费最少。
代码
#include<stdio.h>
#include<string.h>
using namespace std;
#define inf 0x1f1f1f1f
int a[1005][1005];///路径长度
int b[1005][1005];///花费
int d[1005];
int p[1005];
int v[1005];
int n,m;
void init(int n)///初始化
{
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
a[i][j]=inf;
b[i][j]=inf;
}
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
if(n==0||m==0)break;
init(n);
int x,y,z,q;
for(int i=0; i<m; i++)
{
scanf("%d%d%d%d",&x,&y,&z,&q);
if(a[x][y]==inf)///还没有路径,直接赋值
{
a[x][y]=a[y][x]=z;
b[x][y]=b[y][x]=q;
}
else
{
if(a[x][y]>z||a[x][y]==z&&b[x][y]>q)///原来有路径,但是路径长;或则路径虽然一样,但是花费多
{
a[x][y]=a[y][x]=z;
b[x][y]=b[y][x]=q;
}
}
}
int s,t;
scanf("%d%d",&s,&t);
memset(v,0,sizeof(v));
memset(p,0,sizeof(p));
for(int i=1; i<=n; i++)
{
d[i]=inf;
p[i]=inf;
}
//要点1 初始化起点为0.
/*zhongdian*/d[s]=0;///路径
/*zhongdian*/p[s]=0;///花费
//表示s是起点
for(int i=1; i<=n; i++) ///我们将要所有点.
{
int w,m=inf,t;
for(int j=1; j<=n; j++)
{
if(v[j]==0&&d[j]<m)///先找到目前最短路径~
{
w=j;
m=d[j];
t=p[j];
}
if(v[j]==0&&d[j]==m&&p[j]<t)///再找到最短的花费
{
w=j;
m=d[j];
t=p[j];
}
}
v[w]=1;///做标记,表明你这个点已经走过
for(int j=1; j<=n; j++)
{
if(d[w]+a[w][j]<d[j])///到j的路径能够通过当前最短路径进行权值压缩.就要进行压缩
{
d[j]=d[w]+a[w][j];
p[j]=p[w]+b[w][j];
}
if(d[w]+a[w][j]==d[j])
{
if(p[j]>p[w]+b[w][j])
{
p[j]=p[w]+b[w][j];
}
}
}
}
printf("%d %d\n",d[t],p[t]);
}
}
HDU 3790 最短生成树 (最短路)的更多相关文章
- HDU 3790最短路径问题 [最短路最小花费]
题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=3790] 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 3790 最短路径问题 (最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 简单的最短路问题,这题听说有重边.我用spfa和dijkstra写了一遍,没判重边,速度都差不多 ...
- ACM: HDU 3790 最短路径问题-Dijkstra算法
HDU 3790 最短路径问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Des ...
- HDU - 3790 最短路径问题 (dijkstra算法)
HDU - 3790 最短路径问题 Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费 ...
- hdu 3790 最短路径问题(两个限制条件的最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=3790 有两个条件:距离和花费.首先要求距离最短,距离相等的条件下花费最小. dijkstra,仅仅是在推断条件时 ...
- HDU(3790),最短路二级标准
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 3790 最短路径问题 (最短路)
题目链接 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. ...
- hdu 3790 最短路径问题(最短路,Dijsktra)
题目 Dijsktra基础题,只是多了一个花费,稍稍变动处理就好 #define _CRT_SECURE_NO_WARNINGS #include<string.h> #include&l ...
- HDU 3790 (最短路 + 花费)
题意: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. #include<bits/stdc ...
随机推荐
- 蜗牛慢慢爬 LeetCode 8. String to Integer (atoi) [Difficulty: Medium]
题目 Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cas ...
- (十三)Jmeter之Bean Shell 的使用(二)
该文章来自:http://www.cnblogs.com/puresoul/p/5092628.html 上一篇Jmeter之Bean shell使用(一)简单介绍了下Jmeter中的Bean she ...
- centOS7设置静态ip后无法上网的解决,【亲可测】
最近在VMware虚拟机里玩Centos,装好后发现上不了网.经过一番艰辛的折腾,终于找到出解决问题的方法了.最终的效果是无论是ping内网IP还是ping外网ip,都能正常ping通.方法四步走: ...
- C语言为运算及 两个变量的赋值问题
#include <stdio.h>#define ARRAY_SIZE 10int main() { int arr[ARRAY_SIZE] = {51,116,53,120,85 ...
- Asp.net MVC 获取IPv4 地址
public static string GetIP4Address() { string IP4Address = String.Empty; foreach (IPAddress IPA in D ...
- Codeforces Round #525 Div. 2 自闭记
A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- BZOJ3717 PA2014Pakowanie(状压dp)
显然贪心地有尽量先往容量大的背包里放.设f[i]为i子集物品最小占用背包数,g[i]为该情况下最后一个背包的剩余容量,转移显然. #include<iostream> #include&l ...
- HttpHelper类及调用
首先列出HttpHelper类 /// <summary> /// Http操作类 /// </summary> public class HttpHelper { priva ...
- ans menu list
ans menu list 1. 系统配置 a) 基本设置 i. NTP ii. 配置模式 iii. 主机信息 b) 高可用性 i. 节点 ii. 路由监视器 iii. 故障转移接口群 c) 设备标识 ...
- Netsh命令-修改网络IP设置
原文链接地址:https://blog.csdn.net/qq_38054198/article/details/77990914 静态设置IP 修改IP地址addr和子网掩码mask: \>n ...