较为复杂的dijkstra

包含路径打印  最小路的条数  最小路径的情况下取最大权值

v0要是标记就会出错。。。?

有权值的题目  不能设置mp[i][i]为0  否则会无限加权

这题很有参考价值 可以当模板

#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std; #define N 505
#define inf 0x3f3f3f3f int path[N];//输出路径 存放的是i的前一个点 path[j]=u;
int n,e,m,s;
int vis[N],dis[N],mp[N][N];
int city[N];//为权值 第一优先级为最短路 第二优先级为权值最或者最小 此为第二类权值(和点相连) 还有一种权值为和路相连 那种更简单
int peo[N];
int pathnum[N];//最短路的条数!!! 初始为1 只要在路径相同时累合即可 void dijkstra(int s)
{
memset(vis,,sizeof vis); for(int i=;i<n;i++)
dis[i]=mp[s][i];
dis[s]=; path[s]=-;
peo[s]=city[s];
pathnum[s]=; //明确规定不加vis[s] for(int i=;i<=n;i++)
{
int minn=inf,u=-;
for(int j=;j<n;j++)
if(!vis[j]&&minn>dis[j])
minn=dis[u=j]; if(u==-)return;
vis[u]=; for(int j=;j<n;j++)
{ if(dis[j]>dis[u]+mp[u][j])
{
// pathnum[j]=pathnum[u];//最短路条数
dis[j]=dis[u]+mp[u][j];
path[j]=u;
peo[j]=peo[u]+city[j];
}
else if(dis[j]==dis[u]+mp[u][j])
{
// pathnum[j]+=pathnum[u];//最短路条数
if(peo[j]<peo[u]+city[j])
{
path[j]=u;
peo[j]=peo[u]+city[j];
}
}
}
}
} void print(int x)
{
if(path[x]==-)
{printf("%d",x);return;}
print(path[x]);
printf(" %d",x);
return ;
} int main()
{
scanf("%d%d%d%d",&n,&m,&s,&e);
for(int i=;i<n;i++)scanf("%d",&city[i]); for(int i=;i<n;i++)
for(int j=;j<n;j++)
mp[i][j]=inf;//如果加上 i==j 时mp为0 则可以反复刷权值 while(m--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(mp[a][b]>c)mp[a][b]=mp[b][a]=c;
}
dijkstra(s);
printf("%d %d\n", pathnum[e] ,peo[e] );
print(e);
return ;
}

紧急救援 L2-001 dijkstra 打印路径 最短路条数 权值的更多相关文章

  1. 关于 最短路条数 和 边不可重复最短路条数问题 /hdu3599(边不可重复最短路)

    原先一直在做一道省赛题,由于题意错误理解成球最短路条数,误打误撞敲了最短路条数,又发现hdu3599(多校)求边不可重复最短路条数.下面说说俩种问题解法: 最短路条数: 求一个图一共一几条最短路径,思 ...

  2. codeforces257 div2 D最短路条数

    题意: 给一个无向图,总共有 n个点,m+k条边,给定点所连的k条边可以选择删除 问最多删除多少条可以保持该定点到其他点的最短路不变 题解: 从定点出发做单元最短路 首先如果定点到某个点的最短路小于 ...

  3. cogs 2. 旅行计划 dijkstra+打印路径小技巧

    2. 旅行计划 ★★   输入文件:djs.in   输出文件:djs.out   简单对比时间限制:3 s   内存限制:128 MB [题目描述] 过暑假了,阿杜准备出行旅游,他已经查到了某些城市 ...

  4. HDU 1142 A Walk Through the Forest (求最短路条数)

    A Walk Through the Forest 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1142 Description Jimmy exp ...

  5. UVA - 12295 最短路(迪杰斯特拉)——求按对称路线最短路条数

    题意: 给你一个n,然后给你一个n*n的正方形w[i][j],你需要找到一个从(1,1)点走到(n,n)点的最短路径数量.而且这个路径必须按照y=x对称 题解: 我们把左上角的点当作(0,0)点,右下 ...

  6. 拼题 L2-001 紧急救援 最短路计数+记录路径

    https://pintia.cn/problem-sets/994805046380707840/problems/994805073643683840 L2-001 紧急救援 (25 分)   作 ...

  7. POJ 3463 最(次)短路条数

    Sightseeing Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9497   Accepted: 3340 Descr ...

  8. 剑指offer24:二叉树中和为输入整数值的所有路径。(注意: 在返回值的list中,数组长度大的数组靠前)

    1 题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长 ...

  9. L2-001. 紧急救援 (Dijkstra算法打印路径)

    作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城市有紧急求 ...

随机推荐

  1. 【Revit API】FamilyInstance、FamilySymbol、Family的寻找关系

    话不多说,做个笔记 FamilyInstance instance; var typeid = instance.GetTypeId(); var symbol = RevitDoc.GetEleme ...

  2. 【字符串算法2】浅谈Manacher算法

    [字符串算法1] 字符串Hash(优雅的暴力) [字符串算法2]Manacher算法 [字符串算法3]KMP算法 这里将讲述  字符串算法2:Manacher算法 问题:给出字符串S(限制见后)求出最 ...

  3. c/c++ 判断两个实型的关系

    etc. minv=1e-10 or less x>y : x>y-minv x<y : x<y+minv x=y : fabs(x-y)<minv

  4. Redis的持久化数据

    Redis支持两种持久化:RDB和AOF模式 一.名词解释: RDB:持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot).AOF:持久化记录服务器执行的 ...

  5. POJ - 3436 ACM Computer Factory(最大流)

    https://vjudge.net/problem/POJ-3436 题目描述:  正如你所知道的,ACM 竞赛中所有竞赛队伍使用的计算机必须是相同的,以保证参赛者在公平的环境下竞争.这就是所有这些 ...

  6. hdu 527 Necklace

    http://acm.hdu.edu.cn/showproblem.php?pid=5727 阶乘 爆搜阴性宝石的排列,二分图最大匹配判断最多能使多少个阳性宝石不褪色 注: 1.O(n-1 !) 即可 ...

  7. python导出数据到excel

    1,SMTP发送带excel附件的邮件: def sendMail(filename, addressee): """ :param content: 发送内容 :par ...

  8. Zookeeper笔记之四字命令

    Zookeeper支持一些命令用来获取服务的状态和相关信息,因为这些命令都是四个字母的,所以一般称为四字命令. 四字命令可以使用telnet或者nc向服务器提交,使用下面这个脚本可以当做是一个简易的客 ...

  9. requests(一): 发送一个json格式的post请求

    今天给一位同学解决post发送数据格式为json格式的请求,顺便确认一下问题归属. 背景: 用postman工具发送一个数据格式为json的请求,得到了服务器的响应. 用python的requests ...

  10. Hibernate二级缓存(未完待续)

    1.Hibernate的cache介绍: Hibernate实现了良好的Cache机制,可以借助Hibernate内部的Cache迅速提高系统的数据读取性能.Hibernate中的Cache可分为两层 ...