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. BZOJ 3653: 谈笑风生(主席树)

    传送门 解题思路 首先对于一个\(a\)来说,要求\(b\)和\(c\),那么\(a,b,c\)一定在一条链上.把\(b\)分类讨论,如果\(b\)是\(a\)的祖宗,这个方案数就很好统计了,就是\( ...

  2. mysql数据权限操作

    1.创建新用户 通过root用户登录之后创建 >> grant all privileges on *.* to testuser@localhost identified by &quo ...

  3. PostgreSQL9.6的新特性并行查询

    PostgreSQL在2016年9月发布了9.6版本,在该版本中新增了并行计算功能,目前PG支持的并行查询主要是顺序扫描(Sequencial Scans),并且支持部分链接查询(join)和聚合(a ...

  4. 十二、SpringBoot 优雅的集成Spring Security

    前言 至于什么是Spring security ,主要两个作用,用户认证和授权.即我们常说的,用户只有登录了才能进行其他操作,没有登录的话就重定向到登录界面.有的用户有权限执行某一操作,而有的用户不能 ...

  5. DataFrame读取CSV文件

    读取csv的代码: print pd.read_csv("ex1.csv") print "\n" print "Can also use read ...

  6. java部署系列:CentOS下部署Java7/Java8

    一.前言 1.本文主要内容 CentOS下部署OracleJDK CentOS下部署OpenJDK 2.适用范围与本篇环境 适用范围 1.CentOS 6+2.Java 7+ 本篇环境 1.CentO ...

  7. bitmat

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1138  Solved: 556[Submit][Status][Discuss] Descripti ...

  8. Android开发之程序猿必需要懂得Android的重要设计理念

         前几天去參加了带着自己的作品去參加服务外包大赛,由于签位抽到的比較靠后就等待了蛮久,就跟坐在前面的一起參赛的选手開始讨论Android的开发经验.各自给对方展示了自己的作品,小伙伴就建议我看 ...

  9. Error (10170): Verilog HDL syntax error at passwd.v(21) near text "if"; expecting an identifier ("if" is a reserved keyword ), or "endmodule", or a parallel statement

    你得加上时序啊笨蛋

  10. android中使用MediaRecoder录制声音

    package com.test.mediarecorder; import java.io.File; import android.media.MediaRecorder; import andr ...