【迪杰斯特拉双关键字最短路】【HDU3790】【最短路径问题】
题目大意:
只需要再更新的时候判断一下就好
void dijstra(int s)
{
dist[s]=0;
for(int i=1;i<=n;i++)
{
s=findmin();
visit[s]=1;
for(int j=1;j<=n;j++)
{
if(dist[j]>dist[s]+MAP[s][j])
{
dist[j]=dist[s]+MAP[s][j];
val[j]=val[s]+w[s][j];
}
else if(dist[j]==dist[s]+MAP[s][j]&&val[j]>val[s]+w[s][j])
val[j]=val[s]+w[s][j];
}
}
}
完整代码如下:
/*
1.有重边
2.忘记是无向图了
*/
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#define oo 0x13131313
using namespace std;
const int INF=0x3f3f3f3f;
const int maxn=1000+5;
int n,m;
int MAP[maxn][maxn];
int w[maxn][maxn];
int dist[maxn];
int visit[maxn];
int val[maxn];
int ss,tt;
void input()
{
int a,b,d,q;
memset(MAP,0x3f,sizeof(MAP));
memset(dist,0x3f,sizeof(dist));
memset(w,0,sizeof(w));
memset(visit,0,sizeof(visit));
memset(val,0,sizeof(val));
for(int i=1;i<=m;i++)
{
scanf("%d%d%d%d",&a,&b,&d,&q);
if(MAP[a][b]>d)
{
MAP[a][b]=MAP[b][a]=d;
w[a][b]=w[b][a]=q;
}
}
cin>>ss>>tt;
}
int findmin()
{
int min=INF,ANS=0;
for(int i=1;i<=n;i++)
{
if(visit[i]==0)
{
if(dist[i]<min)
{
min=dist[i];
ANS=i;
}
}
}
return ANS;
}
void dijstra(int s)
{
dist[s]=0;
for(int i=1;i<=n;i++)
{
s=findmin();
visit[s]=1;
for(int j=1;j<=n;j++)
{
if(dist[j]>dist[s]+MAP[s][j])
{
dist[j]=dist[s]+MAP[s][j];
val[j]=val[s]+w[s][j];
}
else if(dist[j]==dist[s]+MAP[s][j]&&val[j]>val[s]+w[s][j])
val[j]=val[s]+w[s][j];
}
}
}
void init()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
}
void solve()
{
dijstra(ss);
printf("%d %d\n",dist[tt],val[tt]);
}
int main()
{
// init();
while(cin>>n>>m&&n&&m)
{
input();
solve();
}
}
【迪杰斯特拉双关键字最短路】【HDU3790】【最短路径问题】的更多相关文章
- 迪杰斯特拉算法dijkstra(可打印最短路径)
#include <iostream> #include <iomanip> #include <string> using namespace std; #def ...
- bfs输出路径 && 最短路(迪杰斯特拉)输出路径
问题描述 解决方法 1.像第一个问题那就是最短路问题(我代码采用迪杰斯特拉算法)实现 2.换乘次数最少,那就用bfs广搜来寻找答案.但是我的代码不能保证这个最少换乘是最短路程 代码 1 #includ ...
- HDU6166-Senior Pan-Dijkstra迪杰斯特拉算法(添加超源点,超汇点)+二进制划分集合-2017多校Team09
学长好久之前讲的,本来好久好久之前就要写题解的,一直都没写,懒死_(:з」∠)_ Senior Pan Time Limit: 12000/6000 MS (Java/Others) Memor ...
- 迪杰斯特拉(Java)
public class Dijsktra { public static void main(String[] args) { Dijsktra d=new Dijsktra(); int[][] ...
- dijkstra算法(迪杰斯特拉算法)
dijkstra算法(迪杰斯特拉算法) 用途:有向图最短路径问题 定义:迪杰斯特拉算法是典型的算法,一般的表述通常有两种方式,这里均采用永久和临时标号的方式,该算法要求图中不存在负权边 用永久和临时标 ...
- 算法与数据结构(六) 迪杰斯特拉算法的最短路径(Swift版)
上篇博客我们详细的介绍了两种经典的最小生成树的算法,本篇博客我们就来详细的讲一下最短路径的经典算法----迪杰斯特拉算法.首先我们先聊一下什么是最短路径,这个还是比较好理解的.比如我要从北京到济南,而 ...
- 数据结构图之三(最短路径--迪杰斯特拉算法——转载自i=i++
数据结构图之三(最短路径--迪杰斯特拉算法) [1]最短路径 最短路径?别乱想哈,其实就是字面意思,一个带边值的图中从某一个顶点到另外一个顶点的最短路径. 官方定义:对于内网图而言,最短路径是指两 ...
- pat1003 迪杰斯特拉法和dfs求最短路
本题的背景是求定点和定点之间的最短路问题(所有的最短路 不是一个解 是全部解,方法手段来自数据结构课程中的迪杰斯特拉算法和dfs(深度优先遍历). 分别用两种方法编程如下代码 dfs #includ ...
- HDU 2544最短路 (迪杰斯特拉算法)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others) Me ...
随机推荐
- AC大牛经典语录
超经典: 1. 为了世界的和平,为了女生的安全,我拼命做题,做题,做题! 2. A ac a day, keeps the doctor away! 3. from good to great ...
- C++ Primer 有感(异常处理)
1.异常是通过抛出对象而引发的.该对象的类型决定应该激活哪个处理代码.被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个. 2.执行throw的时候,不会执行跟在throw后面的语句 ...
- SPOJ GCDEX (数论)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题意:求sigma (gcd (i , j)) ...
- top命令的解释
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法. top - 01:06:48 up 1:22, ...
- 简单随笔——如何在gridview的页脚显示信息。。。。
我是超级大菜鸟...哈哈 先上图看看是不是你需要的 第一步,右击gridview,在事件中,单击RowdataBond事件. 在这之前一定要记得在gridview属性中的ShowFooter设置为“t ...
- Android SQLite的使用1(非原创)
1.继承SQLiteOpenHelper :public class MyOpenHelper extends SQLiteOpenHelper {} 2.重写下面3个方法 package com.e ...
- 由WSDL文件生成WEB service server端C#程序(转)
一般一个已经实现功能的WEB Server会发布自己的WSDL文件,供客户端生成代理类. 但有时是先有的server与client交互的接口定义(WSDL)文件,然后由server和client端分别 ...
- Submission Details
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- 导出kettle数据转换设置
在本地测试好的数据清洗配置,要转移到服务器上,就要用到导出数据转换设置. 一直是这使用是在导入设置的 时候总是提示不是kettle的文档格式.后来才发现这是资源库的配置,而不是数据转 换的配置. 导出 ...
- 关于meta定义 和 link
<!DOCTYPE html> <!-- HTML5 doctype 不区分大小写 --> <html lang="zh-cmn-Hans-CN"&g ...