正题

纪中题目链接:https://jzoj.net/senior/#main/show/3470


题目大意

在从起点经过k个标记点然后到终点的最短路。


解题思路

用SPFA求出起点和所有标记点的最短路,然后暴力枚举标记点到达顺序。
时间负责度:O(K(N+M)+k!)O(K(N+M)+k!)O(K(N+M)+k!)


code

#include<cstdio>
#include<queue>
#include<cstring>
#define ll long long
#define inf 1e18+1
#define N 50010
using namespace std;
struct line{long long to,next,w;
}a[N*2];
long long n,m,x,y,w,k,s,t,f[11][N],v[N],tot,ls[N],ans,mark[11],ok[11];
queue<int> q;
void addl()//加边
{scanf("%d%d%d",&x,&y,&w);a[++tot].to=y;a[tot].w=w;a[tot].next=ls[x];ls[x]=tot;
}
void spfa(long long x,long long num)//最短路
{q.push(x);v[x]=1;f[num][x]=0;while(!q.empty()){long long x=q.front();q.pop();for(long long i=ls[x];i;i=a[i].next){long long y=a[i].to;if(f[num][x]+a[i].w<f[num][y]){f[num][y]=f[num][x]+a[i].w;if(!v[y]){v[y]=true;q.push(y);}}}v[x]=false;}
}
void dfs(long long dep,long long sum,long long be)
{if(dep==k) sum+=f[be][t];//到终点if(sum>ans) return;//剪枝if(dep==k){ans=sum;}for(long long i=1;i<=k;i++)if(!ok[i]){ok[i]=1;dfs(dep+1,sum+f[be][mark[i]],i);ok[i]=0;}
}
int main()
{scanf("%lld%lld%lld%lld%lld",&n,&m,&k,&s,&t);for(long long i=1;i<=m;i++)addl();for(int j=0;j<N;j++) f[0][j]=inf;spfa(s,0);for(long long i=1;i<=k;i++)//标号点求最短路{for(int j=0;j<N;j++) f[i][j]=inf;scanf("%lld",&mark[i]);spfa(mark[i],i);}ans=inf;dfs(0,0,0);//搜索if(ans>=inf) printf("-1");else printf("%lld",ans);
}

nssl1141,jzoj3470-最短路【SPFA,暴力】相关推荐

  1. 洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA

    洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA 二分交费最多的一次的钱数 然后只将符合要求的边加入图中 如果到终点的最短路大于等于血量 或者直接起点不能到达终点 那么说明不符合要求 需要 ...

  2. 图论刷水题记录(二)(最短路-----SPFA算法)

    继第一篇的后续,又来刷水题了,写的是SPFA算法,这个算法的复杂度比较玄学,感觉能不用就不用了,但是他的好处就是可以判断负圈. 3月26日: 1.POJ 1847 Tram 题意:在一个交通网络上有N ...

  3. 单源最短路 SPFA 算法模板

    简介 在图论中,最短路是十分重要的一部分,在很多问题中都有涉及 而现在所讲的 SPFA 算法是十分优秀的算法,时间复杂度为 O(k∗E)O(k*E) 其中 EE 是图的边数,而 kk 是一个常数,一般 ...

  4. POJ 3259 Wormholes【最短路/SPFA判断负环模板】

    农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...

  5. POJ - 2449 Remmarguts' Date(第k短路:spfa+A*)

    题目链接:点击查看 题目大意:给出一个有向图,求第k短路 题目分析:偷学了一波A*,本来以为是多难的算法,其实就是bfs+优先队列的升级版,之前看的那些博客写的都太深奥了,以至于看了一半啥都没看懂然后 ...

  6. 【bzoj1726/Usaco2006 Nov】Roadblocks第二短路——SPFA

    题目链接 分析:题目要求一个连通图的从1到n的严格次短路,我们只需要在跑最短路的时候顺便判一下次短路是否能够被更新即可. dis[x][0]表示1到x的最短路,而dis[x][1]则表示次短路,需要分 ...

  7. jzoj1267-路障【最短路,SPFA】

    正题 大意 一张无向图,求次短路. 解题思路 我们先求出最短路并且求出点1和点n到每个点的距离,然后枚举边,将第一个点离点1的距离,和第二个点离点n的距离加上边权如果不是最短路就记录,然后取最小值. ...

  8. 洛谷P1346-电车【日常图论,最短路,SPFA】

    题目 一个有向图,每个点有个默认方向和若干个其他方向,走默认方向权值为0,其他方向权值为1,求最短路 输入 3 2 1(3个点,点2到点1) 2 2 3(2个点,起点为1,2为默认点,3为其他点) 2 ...

  9. 【POJ】3255 Roadblocks(次短路+spfa)

    http://poj.org/problem?id=3255 同匈牙利游戏. 但是我发现了一个致命bug. 就是在匈牙利那篇,应该dis2单独if,而不是else if,因为dis2和dis1相对独立 ...

最新文章

  1. ThinkPHP入门(二)
  2. 建议你吃透这68个内置函数!
  3. MESI缓存一致性协议
  4. TypeError: BlobBuilder is not a constructor
  5. android 开发错误点滴积累--Asset资源管理
  6. php 二维数组 根据某个字段排序
  7. 操作系统的运行机制和体系机构
  8. 数据库设计14个技巧
  9. (15)Verilog HDL宏定义:define
  10. 幼儿园视频监控系统设计方案
  11. 中关村修电脑记实:那些年,修电脑犯下的错!
  12. 最常被利用的三大 API 漏洞:是什么、为什么、如何阻止?
  13. mac电池损耗百分比怎么查看
  14. redis,memcache二者的区别
  15. 解决ajax跨域的方法原理详解之Cors方法
  16. 蓝牙耳机哪个音质好?推荐几款音质好的蓝牙耳机
  17. 服务器被黑客攻击快速解决方案
  18. Android中Style详解
  19. 传统医美身处风口浪尖,互联网医美如何拯救?
  20. Python爬虫面试简历 经验分析

热门文章

  1. php 下拉表单,PHP表单和填充下拉列表问题
  2. mongodb默认的用户名密码_设置mongodb的用户名密码 | Think in Drupal
  3. 促进新一代人工智能产业发展三年行动计划_工信部新一代人工智能产业创新重点揭榜任务——中国联通智能化网络基础设施及开放平台启动会成功召开...
  4. html点击按钮计算两个输入框的和_小程序计算报价功能介绍
  5. java 数组 树_java使用顺序数组实现二叉树
  6. mysql导入数据提前修改字段_Mysql一些导入导出数据库,添加修改字段命令_MySQL...
  7. 面试必问系列之在浏览器中输入URL后到网页显示 其间发生了什么?
  8. 计算机等级delphi取消,计算机二级DELPHI控件:DELPHI过滤记录的实现方法
  9. win10 64位操作系统安装mysql_win10,64位操作系统安装mysql-8.0.16经验总结(图文详细,保证一次安装成功)...
  10. background图片不显示_一种解决Retina屏幕1px边框显示问题的方案