void diji(int x){
fill(dis,dis+n,INT_MAX);
dis[x] = ;
for(int i=;i < n;i++) pre[i] = i;
while(){
int minn = INT_MAX;
int v = -;
for(int i=;i < n;i++){
if(!vis[i]&&dis[i] < minn){
v = i;
minn = dis[i];
}
}
if(v == -)break;
vis[v] = ;
for(int i=;i < n;i++){
if(!vis[i]&&cost1[i][v]!=INT_MAX&&dis[v]+cost1[i][v]<dis[i]){
dis[i] = dis[v] + cost1[i][v];
pre[i] = v;
}
}
}
}

初始化:

int main(){
int m,s;
cin >> n >> m >> s >> d;
for(int i=;i < n;i++){
for(int j=;j < n;j++){
cost1[i][j] = INT_MAX;
cost1[i][i] = ;
}
}
for(int i=;i < m;i++){
int x,y,a,b;
cin >> x >> y >> a >> b;
cost1[x][y] = a;
cost1[y][x] = a;
cost2[x][y] = b;
cost2[y][x] = b;
}
diji(s); for(int i=;i < n;i++) cout << pre[i] << " ";
return ;
}

diji+dfs模板

#include<iostream>
#include<vector>
using namespace std;
const int maxv = ;
const int INF = 1e9 + ;
int G[maxv][maxv], d[maxv], C[maxv][maxv];
int n, m, s, dd, mincost = INF;
bool vis[maxv];
vector<int>pre[maxv];
vector<int>temp, path;
void Dijkstra(int s)
{
fill(d, d + maxv, INF);
d[s] = ;
while ()
{
int u = -, MIN = INF;
for (int i = ; i < n; i++)
{
if (!vis[i]&&d[i] < MIN)MIN = d[i], u = i;
}
if (u == -)return;
vis[u] = true;
for (int i = ; i < n; i++)
{
if (!vis[i] && G[u][i])
{
if (d[u] + G[u][i] < d[i])
{
d[i] = d[u] + G[u][i];
pre[i].clear(); //之前记录的不是最优的路,删去以后补上最优路的前项
pre[i].push_back(u);
}
else if (d[u] + G[u][i] == d[i])
{
pre[i].push_back(u);//相等的话增加一个前项点
}
}
}
}
}
void DFS(int v)
{
if (v == s)
{
temp.push_back(s);
int tempcost = ;
for (int i = temp.size() - ; i > ; i--)
{
int v = temp[i];
int u = temp[i - ];
tempcost += C[u][v];
}
if (tempcost < mincost)
{
mincost = tempcost;
path = temp;
}
temp.pop_back();
return;
}
temp.push_back(v);
for (int i = ; i < pre[v].size(); i++)
DFS(pre[v][i]);
temp.pop_back();
}
int main()
{
scanf("%d%d%d%d", &n, &m, &s, &dd);
for (int i = ; i < m; i++)
{
int c1, c2, dis, cost;
scanf("%d%d%d%d", &c1, &c2, &dis, &cost);
G[c1][c2] = G[c2][c1] = dis;
C[c1][c2] = C[c2][c1] = cost;
}
Dijkstra(s);
DFS(dd);
for (int i = path.size() - ; i >= ; i--)printf("%d ", path[i]);
printf("%d %d", d[dd], mincost);
return ;
}

——求相同路径的条数把pre[i]中有数的连城就好了8

https://www.liuchuo.net/archives/tag/dijkstra

diji模板的更多相关文章

  1. String Problem(模板)【最短路】

    String Problem 题目链接(点击) Boy Valera likes strings. And even more he likes them, when they are identic ...

  2. Jade模板引擎让你飞

    写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...

  3. ABP入门系列(2)——通过模板创建MAP版本项目

    一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...

  4. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  5. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  6. 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...

  7. OpenCV模板匹配算法详解

    1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...

  8. 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定

    一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...

  9. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

随机推荐

  1. 极限IO优化

    namespace IO{ #define BUF_SIZE 100000 #define OUT_SIZE 100000 #define ll long long //fread->read ...

  2. Ruby 技能图谱

    # Ruby 技能图谱 说明: 本图谱只捡重点的列举,并非包含全部.文中所列举或没有列举的资源信息都可以在[awesome-ruby](https://github.com/markets/aweso ...

  3. JS-MiniUI:百科

    ylbtech-JS-MiniUI:百科 MINIUI是一款优秀的JS前端web框架,提供丰富.强大控件库,能快速开发企业级Web应用软件.该软件以美观精致的界面和快速的页面响应速度获得用户的好评.是 ...

  4. iOS之CAReplicatorLayer属性简介和使用

    1.CAReplicatorLayer简介 CAReplicatorLayer用于对图层进行复制,包括图层的动画也能复制!可以看着将某一段事务进行重复! #import <QuartzCore/ ...

  5. spring+freemarker 乱码解决办法

    这样应该可以了~ <!-- freemarker config --> <bean id="freemarkerConfig" class="org.s ...

  6. 【IO流】java中文件路径(相对路径、绝对路径)相关类及方法

    原文链接:https://blog.csdn.net/Activity_Time/article/details/98034409 1. URL 菜鸟教程:Java URL处理 通常推荐对http等协 ...

  7. jmeter 函数学习

    https://jmeter.apache.org/usermanual/functions.html#__threadNum

  8. (1.1)学习笔记之mysql体系结构(内存、进程、线程)

    关键词:mysql体系结构 参考:https://www.cnblogs.com/zhoubaojian/articles/7866292.html 一.mysql体系架构概述 1.mysql体系结构 ...

  9. JSON工具类的构建(后端版本)

    前言 在前后端交互的选择上,之前一直采用的是模板引擎(因为我只负责后端). 而这次的一个算是作业吧,前后端都是我,所以就研究了一下JSON交互在java web的应用(主要是前端). 优缺点 前后端耦 ...

  10. Msys2升级后不能编译

    Msys2升级后不能编译 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839496;} cod ...