飞行路线

题目链接

今天上午模拟考试考了原题,然而数组开小了,爆了4个点。

据王♂强dalao说这是一道分层图SPFA的裸题

dis[i][j]表示到点i用k个医疗包的最小消耗,dis[u][j]+e[i].w更新dis[v][j],

dis[u][j]更新dis[v][j+1]

然而它卡SPFA,会TLE几个点

于是就有了堆优化SPFA。。(它就是堆优化dijkstra。。)

#include<cstring>
#include<cstdio>
#include<queue>
#define INF 0x3f3f3f3f
#define N 10010
int n,m,k,s,t,ans=INF;
int dis[N][];
struct HA{
int pos,cost,times;
};
struct cmp{
bool operator()(HA x,HA y){
return x.cost==y.cost?x.times>y.times:x.cost>y.cost;
}
};
std::priority_queue< HA, std::vector<HA>, cmp > q;
bool vis[N][];
int Head[N],num;
struct NODE{
int to,w,next;
} e[];
const int ch_top=4e7+;
char ch[ch_top],*now_r=ch-,*now_w=ch-;
inline int read(){
while(*++now_r<'');
register int x=*now_r-'';
while(*++now_r>='')x=x*+*now_r-'';
return x;
}
inline void write(int x){
static char st[];static int top;
while(st[++top]=''+x%,x/=);
while(*++now_w=st[top],--top);
*++now_w='\n';
}
void SPFA(){
memset(dis,0x3f,sizeof(dis));
for(int i=;i<=k;i++){
dis[s][i]=;
q.push((HA){s,,i});
}
while(!q.empty()){
int u=q.top().pos,f=q.top().times;
q.pop();
vis[u][f]=;
for(int i=Head[u];i;i=e[i].next){
int v=e[i].to;
if(dis[v][f]>dis[u][f]+e[i].w){
dis[v][f]=dis[u][f]+e[i].w;
if(!vis[v][f]){
vis[v][f]=;
q.push(HA{v,dis[v][f],f});
}
}
if(f<k&&dis[v][f+]>dis[u][f]){
dis[v][f+]=dis[u][f];
if(!vis[v][f+]){
vis[v][f+]=;
q.push(HA{v,dis[v][f+],f+});
}
}
}
}
}
int main()
{
fread(ch,,ch_top,stdin);
n=read(); m=read(); k=read();
s=read(); t=read();
int x,y,w;
for(int i=;i<=m;i++){
x=read(); y=read(); w=read();
e[++num].to=y;
e[num].w=w;
e[num].next=Head[x];
Head[x]=num;
e[++num].to=x;
e[num].w=w;
e[num].next=Head[y];
Head[y]=num;
}
SPFA();
write(dis[t][k]);
fwrite(ch,,now_w-ch,stdout);
return ;
}

最新文章

  1. [转]python 常用类库!
  2. IOS SWIFT 启动流程学习
  3. 《征服 C 指针》摘录3:数组 与 指针
  4. BT协议分析(1)&mdash;1.0协议
  5. Web程序员开发App系列 - 开发我的第一个App,源码下载
  6. Spring实战2:装配bean—依赖注入的本质
  7. HDU 1707
  8. git源码中的Makefile
  9. Javascript计算密码的强度
  10. android listview 重用view导致的选择混乱问题
  11. Chapter 21_1 字符串函数
  12. STM32F103 使用TIM3产生四路PWM
  13. arguments及arguments.callee
  14. Django(博客系统):按照时间分层筛选“/blog/article/?create_time__year=2017”,出现问题:Database returned an invalid datetime value. Are time zone definitions for your database installed?
  15. Spring框架学习笔记(3)——配置bean
  16. Restful中 @RequestParam,@PathParam,@PathVariable等注解区别
  17. Spring ES
  18. 中文dumps显示
  19. 机器学习入门07 - 验证 (Validation)
  20. Ubuntu Firefox HTML5

热门文章

  1. 【Linux】快速清空当前文件
  2. 5、Angular2 Injectable 服务
  3. 什么是图像 -- opencv基础
  4. Web程序中使用EasyUI时乱码问题
  5. Colorbox - a jQuery lightbox
  6. vbScript: 编号成生不夠位數前面加零
  7. 【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动
  8. Disruptor之粗糙认识
  9. centOs升级
  10. angular - webpack2 例子