题目链接

http://codeforces.com/gym/101630/attachments

题解

zyb学长的题。
先枚举第\(k\)大的边权,设其边权为\(x\),然后把每条边边权减掉\(x\)与\(0\)取\(\max\), 跑最短路之后加上\(x\times k\)更新答案。
注意从\(0\)开始枚举(就相当于裸跑最短路)。

代码

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cassert>
#include<algorithm>
#include<queue>
#include<cstring>
#define llong long long
using namespace std;const int N = 3000;
const int M = 6000;
struct Edge
{int v,nxt; llong w;
} e[M+3];
int fe[N+3];
struct AEdge
{int u,v; llong w;
} ae[M+3];
struct DijNode
{int u; llong dis;DijNode() {}DijNode(int _u,llong _dis) {u = _u,dis = _dis;}bool operator <(const DijNode &arg) const {return dis>arg.dis;}
};
priority_queue<DijNode> pq;
llong dis[N+3];
bool vis[N+3];
int n,en,p,s,t,m;void addedge(int u,int v,llong w)
{en++; e[en].v = v; e[en].w = w;e[en].nxt = fe[u]; fe[u] = en;
}void clear()
{for(int i=1; i<=m; i++) e[i].v = e[i].nxt = e[i].w = 0;for(int i=1; i<=n; i++) fe[i] = 0;en = 0;
}llong Dijkstra()
{memset(dis,42,sizeof(dis)); memset(vis,false,sizeof(vis));dis[s] = 0ll; pq.push(DijNode(s,0));while(!pq.empty()){DijNode tmp = pq.top(); pq.pop(); int u = tmp.u;if(tmp.dis!=dis[u]) continue;if(vis[u]==true) continue;vis[u] = true;for(int i=fe[u]; i; i=e[i].nxt){int v = e[i].v;if(dis[v]>dis[u]+e[i].w && vis[v]==false){dis[v] = dis[u]+e[i].w;pq.push(DijNode(v,dis[v]));}}}return dis[t];
}int main()
{scanf("%d%d%d",&n,&m,&p); s = 1; t = n;for(int i=1; i<=m; i++){scanf("%d%d%I64d",&ae[i].u,&ae[i].v,&ae[i].w);}llong ans = 10000000000000000ll;for(int i=0; i<=m; i++){for(int j=1; j<=m; j++) addedge(ae[j].u,ae[j].v,max(ae[j].w-ae[i].w,0ll)),addedge(ae[j].v,ae[j].u,max(ae[j].w-ae[i].w,0ll));llong cur = Dijkstra();ans = min(ans,cur+ae[i].w*p);clear();}printf("%I64d\n",ans);return 0;
}

Codeforces Gym 101630J Journey from Petersburg to Moscow (最短路)相关推荐

  1. Codeforces Gym 101630J Travelling from Petersburg to Moscow (最短路)

    题目链接 http://codeforces.com/gym/101630/attachments 题解 zyb学长的题. 先枚举第\(k\)大的边权,设其边权为\(x\),然后把每条边边权减掉\(x ...

  2. 一道有趣的最短路 NEERC2017 Journey from Petersburg to Moscow

    题目链接 http://codeforces.com/gym/101630/attachments/download/6401/20172018-acmicpc-northeastern-europe ...

  3. [CF_GYM101630J]Journey from Petersburg to Moscow

    题目 题目背景 给生者的忠告: 不要踏进 狗熊岭 半步.在这里的人只有两种:被熊踩死的,和被狗咬死的. 如果你已经进来了,那么不要直视狗的眼睛.它的眼睛有一种魔力,可以将你的视线牢牢吸引住:在它的眼睛 ...

  4. Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks

    Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks 强烈安利这道构造题目,非常有意思. 这里用到的思想是归并排序! 多路归并排序 ...

  5. Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven)

    Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven) 题目来源: Codeforces 题意: 给出一些比赛, ...

  6. [Codeforces Gym 101651/100725B] Banal Tickets

    Codeforces Gym 100725 题解: 先分两种情况, 积为000与积非0" role="presentation" style="position ...

  7. C. Tyler and Strings(组合数学,树状数组维护前缀和)(Codeforces Round #775 (Div. 1, based on Moscow Open Olympiad i)

    对我来说比较困难的一题了,尝试着自己写了一下,调不出来遂放弃. Codeforces Round #775 (Div. 1, based on Moscow Open Olympiad in Info ...

  8. Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)简训

    Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)简训 导语 涉及的知识点 题目 A Game B ...

  9. Codeforces Gym 100513G G. FacePalm Accounting 暴力

    G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...

最新文章

  1. 7-8 Windows消息队列 (25 分)
  2. 第二课.图卷积神经网络
  3. Leetcode 350 两个数的交集2
  4. 技术硬核还不够?互联网企业出海指南来了!
  5. 【Storm篇】--Storm基础概念
  6. java关闭当前窗口打开另一窗口
  7. 春节礼品:iPhone 11 抱回家
  8. P1983 车站分级
  9. 使用Jenkins,GitHub和Docker的最先进的持续集成和部署管道
  10. C++资源库不完全版本
  11. linux网络编程:使用多进程实现socket同时收发数据
  12. Apache 配置两个域名匹配的文件夹和配置多个Web站点
  13. 漫谈云计算与OpenStack的前世今生
  14. Decorator 装饰模式
  15. Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库
  16. 幂等矩阵(Idempotent matrix)
  17. 反编译008神器,修改手机型号与android版本号信息
  18. 关于File.separator[转]
  19. 基于“机器学习”的智能聊天机器人---python实现(1)
  20. HDCP ---- 名词解释

热门文章

  1. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170410
  2. <马哲>劳动价值论的理论及实践意义
  3. xp 无线连接 服务器,NPS配置无线策略XP能正常连接,WIN连接不成功
  4. tf.nn.conv2d() / tf.nn.depthwise_conv2d() 和 Batchsize效益
  5. 23种设计模式C++源码与UML实现--中介者模式
  6. npm ERR! cb.apply is not a function npm ERR! A complete log of this run can be found in: npm ERR!
  7. 王爽汇编语言实验7一个很好的解法(转)
  8. 直接定址表---汇编学习笔记
  9. 装饰者模式(为对象提供加强的接口)
  10. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 Tomb Raider(map+二进制枚举)