把每个点拆成两个点,分别表示黑洞和白洞,然后按题意模拟加边跑最短路即可。

  1. # include <cstdio>
  2. # include <cstring>
  3. # include <cstdlib>
  4. # include <iostream>
  5. # include <vector>
  6. # include <queue>
  7. # include <stack>
  8. # include <map>
  9. # include <set>
  10. # include <cmath>
  11. # include <algorithm>
  12. using namespace std;
  13. # define lowbit(x) ((x)&(-x))
  14. # define pi 3.1415926535
  15. # define eps 1e-
  16. # define MOD
  17. # define INF
  18. # define mem(a,b) memset(a,b,sizeof(a))
  19. # define FOR(i,a,n) for(int i=a; i<=n; ++i)
  20. # define FO(i,a,n) for(int i=a; i<n; ++i)
  21. # define bug puts("H");
  22. # define lch p<<,l,mid
  23. # define rch p<<|,mid+,r
  24. # define mp make_pair
  25. # define pb push_back
  26. typedef pair<int,int> PII;
  27. typedef vector<int> VI;
  28. # pragma comment(linker, "/STACK:1024000000,1024000000")
  29. typedef long long LL;
  30. int Scan() {
  31. int res=, flag=;
  32. char ch;
  33. if((ch=getchar())=='-') flag=;
  34. else if(ch>=''&&ch<='') res=ch-'';
  35. while((ch=getchar())>=''&&ch<='') res=res*+(ch-'');
  36. return flag?-res:res;
  37. }
  38. void Out(int a) {
  39. if(a<) {putchar('-'); a=-a;}
  40. if(a>=) Out(a/);
  41. putchar(a%+'');
  42. }
  43. const int N=;
  44. //Code begin...
  45.  
  46. int w[N], mark[N], s[N], dist[N<<];
  47. struct qnode{
  48. int v, c;
  49. qnode(int _v=, int _c=):v(_v),c(_c){}
  50. bool operator <(const qnode &r)const{return c>r.c;}
  51. };
  52. struct Edge{
  53. int v, cost;
  54. Edge(int _v=, int _cost=):v(_v),cost(_cost){}
  55. };
  56. vector<Edge>E[N<<];
  57. bool vis[N<<];
  58. priority_queue<qnode>que;
  59.  
  60. void Dijkstra(int n, int start){
  61. mem(vis,);
  62. FOR(i,,n) dist[i]=INF;
  63. dist[start]=; que.push(qnode(start,));
  64. qnode tmp;
  65. while (!que.empty()) {
  66. tmp=que.top(); que.pop();
  67. int u=tmp.v;
  68. if (vis[u]) continue;
  69. vis[u]=true;
  70. FO(i,,E[u].size()) {
  71. int v=E[u][i].v, cost=E[u][i].cost;
  72. if (!vis[v]&&dist[v]>dist[u]+cost) dist[v]=dist[u]+cost, que.push(qnode(v,dist[v]));
  73. }
  74. }
  75. }
  76. void addedge(int u, int v, int w){E[u].pb(Edge(v,w));}
  77. int main ()
  78. {
  79. int n, m, u, v, cost;
  80. scanf("%d%d",&n,&m);
  81. FOR(i,,n) scanf("%d",mark+i);
  82. FOR(i,,n) scanf("%d",w+i);
  83. FOR(i,,n) scanf("%d",s+i), addedge(i,n+i,), addedge(n+i,i,s[i]);
  84. FOR(i,,m) {
  85. scanf("%d%d%d",&u,&v,&cost);
  86. if (mark[u]==mark[v]) addedge(u,n+v,cost), addedge(n+u,v,cost);
  87. else {
  88. int delta=abs(w[u]-w[v]);
  89. addedge(u,v,max(,cost-delta)); addedge(n+u,n+v,cost+delta);
  90. }
  91. }
  92. Dijkstra(n<<,mark[]?n+:);
  93. printf("%d\n",min(dist[n],dist[n<<]));
  94. return ;
  95. }

HUAS 1480 虫洞(最短路)的更多相关文章

  1. 【最短路】NOIP模拟赛 虫洞

    虫洞 [题目描述] N个虫洞,M条单向跃迁路径.从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间.虫洞有白洞和黑洞之分.设一条跃迁路径两端的虫洞质量差为delta. 1. 从白洞跃迁到 ...

  2. POJ 3259 Wormholes 虫洞(负权最短路,负环)

    题意: 给一个混合图,求判断是否有负环的存在,若有,输出YES,否则NO.有重边. 思路: 这是spfa的功能范围.一个点入队列超过n次就是有负环了.因为是混合图,所以当你跑一次spfa时发现没有负环 ...

  3. [P2850][USACO06DEC]虫洞Wormholes (最短路)

    死活调不出来 后来是发现这题建边的原因…… 吐血.jpg 所谓的虫洞传说也就是负边了 然后这里打的spfa和原来的不一样 感觉hzwer大佬的spfa好强啊…… 也更易写一点 贴代码 #include ...

  4. BZOJ 1715: [Usaco2006 Dec]Wormholes 虫洞

    Description John在他的农场中闲逛时发现了许多虫洞.虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前).John的每个农场有M条小路(无向边)连接着N ...

  5. Wormholes---poj3259(最短路 spfa 判断负环 模板)

    题目链接:http://poj.org/problem?id=3259 题意是问是否能通过虫洞回到过去: 虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts. 我们把虫洞看成是一条负权路,问 ...

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

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

  7. 分层图 (可以选择K条路的权为0,求最短路)

    分层图可以处理从图中选取k条边使其边权变为0,求最短路 Description 在你的强力援助下,PCY 成功完成了之前的所有任务,他觉得,现在正是出去浪的大好时光.于是,他来到高速公路上,找到一辆摩 ...

  8. 题解 P2620 虫洞

    总体思路:离散化 + 建图 + 单源最短路(看见人少蒟蒻才敢发题解QAQ) 需要注意的是: 考虑到w范围较大,而实际虫洞数量较小,就只记录虫洞的起点与终点来建图. 建图时,虫洞起点可以去重. 在建图时 ...

  9. P2620 虫洞

    题目背景 applepi 想进行宇宙旅行.当然,applepi 知道这是有可能的,因为applepi 的特殊能力能使他观测到宇宙中的虫洞.所谓虫洞就是一个在三维之外的维度打开的快捷通道,通过虫洞能够从 ...

随机推荐

  1. Apache Tomcat 8.5 安全配置与高并发优化

    通常我们在生产环境中,Tomcat的默认配置显然不能满足我们的产品需求,所以很多时候都需要对Tomcat的配置进行调优,以下综合我自己的经验来配置 Tomcat 安全与优化情况,如果你有更好的方案,请 ...

  2. 【Hutool】Hutool工具类之随机工具——RandomUtil

    commons-lang中对应也有RanddomUtils.RandomStringUtils 直接从类结构开始入手: 基本都是见名知意了,就不一一展开:点开源码可以看到算是比较通俗易懂的对Rando ...

  3. [python]PyCharm安装与激活

    一.安装 1.去官网下载安装包(http://www.jetbrains.com/pycharm/download/#section=windows) 2.下载完成之后双击即可点击安装,按照自己需求选 ...

  4. elasticsearch集群整合elqsticsearch-sql插件

    1.本来整合这个插件是比较简单易操作的,但是由于公司从AWS下载禁掉了,给安装带来一些麻烦, 采用离线安装,先FQ将elasticsearch-sql-5.1.2.0.zip下载下来: ./bin/e ...

  5. 如果看懂git -help

    每一个git 命令,都可以git * --help 打开git 的网页去看详细内容,也可以git * -help 在当前命令行里面看. 如下: zy@caoxinyu MINGW64 /f/git/i ...

  6. 利用Powershell查询AD中账号属性

    标签:AD账号信息 最后登录时间 最后修改密码.SID 账号SID 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://hubuxcg ...

  7. C# 浮点转时间

    想了大半天实在想不出什么更适合文章的标题... 就现在这个标题,挺好- - 什么是浮点转时间呢? 今天写的一个计时功能,想来想去还是现在这种解决方案比较合适 先上一张图在来讲解比较明了 如图:赛车游戏 ...

  8. php api_token 与 user_token 简析

    前言: --->非开放性平台 --->公司内部产品 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是 ...

  9. 文件包含漏洞(RFI)

    1文件包含漏洞简介 include  require  include_once   require_once RFI综述 RFI是Remote File Inclusion的英文缩写,直译过来就是远 ...

  10. Linux管道及I/O重定向

    I/O: 系统设定 默认输入设备:标准输入,STDIN,0 默认输出设备:标准输出,STDOUT,1 标准错误输出:STDERR,2 属于不同的数据流 标准输入:键盘 标准输出和错误输出:显示器 I/ ...