首先理解这里的美味值相当于给你更多时间让你经过这个草垛的,

也就是在经过草垛时可以给你的时间减少w[i],这样能否比最短路不慢

然而我们并不容易知道怎么走才是最好的,所以要想办法避免找这个方案

我们新建一个点,向每个草垛连一个边权为 d[u]-w[u] 的有向边,从这个点跑一次最短路

效果就相当于求了从每个点到这个新点的最短路,而我们看d2[x]的组成,

我们想要的效果是从x出发走到u,减去一个w[u],再走到n,看能不能更好

而走到u之后不走到n,而是走到这个新点,d2[x]的组成就是从x走到u再加上u点到新点的边权d[u]-w[u],效果是一样的

这样就很好的避免了找方案的问题

最后比较一下d2[x]和d[x]的大小

#include<bits/stdc++.h>
#define mp make_pair
using namespace std;
const int maxn=;
const int maxm=;
int n,m,k;
struct node{
int v,w,nxt;
}e[maxm*];
int head[maxn],cnt;
void add(int u,int v,int w){
e[++cnt].w=w;e[cnt].v=v;e[cnt].nxt=head[u];head[u]=cnt;
}
priority_queue<pair<int,int> >q;
int d[maxn],d2[maxn],v[maxn];
void dij(int s){
memset(d,0x3f,sizeof(d));
memset(v,,sizeof(v));
d[s]=;q.push(mp(,s));
while(!q.empty()){
int x=q.top().second;q.pop();
if(v[x])continue;v[x]=;
for(int i=head[x];i;i=e[i].nxt){
int y=e[i].v,z=e[i].w;
if(d[y]>d[x]+z)
d[y]=d[x]+z,q.push(mp(-d[y],y));
}
}
}
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=,u,v,w;i<=m;i++){
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);add(v,u,w);
}
dij(n);
for(int i=;i<=n;i++)d2[i]=d[i];
for(int i=,u,w;i<=k;i++){
scanf("%d%d",&u,&w);
add(n+,u,d2[u]-w);
}
dij(n+);
for(int i=;i<n;i++)
if(d2[i]>=d[i])printf("1\n");
else printf("0\n");
}

最新文章

  1. CPU的大小端模式
  2. Windows 特殊文件夹的位置
  3. firefox怎么修改tls协议号
  4. C# Log4Net配置
  5. DB2中的系统表SYSIBM.SYSDUMMY1
  6. MFC消息映射的原理:笔记
  7. Web API实现POST报文的构造与推送
  8. mysql trouble shooting---- 从库停止同步lock_wait_timeout_exceeded_try_restarting_transaction
  9. 由merge into引起的序列跳号
  10. python基础学习(六)函数基础
  11. PHP GZ压缩与解压
  12. 提高Linux运维效率的命令行常用快捷键
  13. C++获取单链表的倒数第k个节点
  14. CF875F Royal Questions
  15. const typedef 和指针的问题(这里必须初始化的才初始化了,不必须的则没有初始化)
  16. 题目1439:Least Common Multiple(求m个正数的最小公倍数lcm)
  17. c#基础学习(0708)之静态类
  18. 论文笔记 Pose-driven Deep Convolutional Model for Person Re-identification_tianqi_2017_ICCV
  19. oracle备份恢复学习
  20. 【LeetCode】69. Sqrt(x) (2 solutions)

热门文章

  1. lAMP下新建维护站点全过程
  2. delphi2010\delphi XE7 开发及调试WebService 实例
  3. codeforces B. Ilya and Queries 解题报告
  4. html5--6-1 引入外部样式表
  5. java 基于百度地图API GPS经纬度解析地址
  6. 【转载】malloc和new
  7. flume 日志收集单节点
  8. vmware tools for linux 安装
  9. H264解码器源码(Android 1.6 版)
  10. SQL SERVER2008 打开脚本总是报“未能完成操作,存储空间不足”