思路:



这道题 不能把所有边都建出来 会MLE的!!!

oh gosh

其实不建所有的边 用的时候再调就行了….(也没啥区别)

//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 100050
int n,m,k,first[N],v[N],w[N],next[N],tot,dis[N][21],vis[N][21],xx,yy,zz;
void add(int x,int y,int z){
w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;
}
struct Node{int now,level,weight;}jy;
bool operator < (Node a,Node b){return a.weight>b.weight;}
void Dijkstra(){
memset(dis,0x3f,sizeof(dis)),dis[1][0]=0;
priority_queue<Node>pq;
jy.now=1,pq.push(jy);
while(!pq.empty()){
Node t=pq.top();pq.pop();
if(vis[t.now][t.level])continue;
vis[t.now][t.level]=1;
for(int i=first[t.now];~i;i=next[i]){
if(!vis[v[i]][t.level]&&dis[v[i]][t.level]>dis[t.now][t.level]+w[i]){
dis[v[i]][t.level]=dis[t.now][t.level]+w[i];
jy.level=t.level,jy.now=v[i],jy.weight=dis[v[i]][t.level],pq.push(jy);
}
if(t.level<k&&!vis[v[i]][t.level+1]&&dis[v[i]][t.level+1]>dis[t.now][t.level]){
dis[v[i]][t.level+1]=dis[t.now][t.level];
jy.level=t.level+1,jy.now=v[i],jy.weight=dis[t.now][t.level],pq.push(jy);
}
}
}
}
int main(){
memset(first,-1,sizeof(first));
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&xx,&yy,&zz);
add(xx,yy,zz),add(yy,xx,zz);
}
Dijkstra();
printf("%d\n",dis[n][k]);
}

最新文章

  1. 在VS中操作Mysql数据库
  2. JavaScript 函数参数传递到底是值传递还是引用传递
  3. maven 无法安装plugin的问题
  4. win7无线网连接了,但是图标显示未连接
  5. GlusterFS特性介绍
  6. Centos linux php扩展安装步骤
  7. Codeforces Round #346 (Div. 2) E - New Reform 无相图求环
  8. 从html5标准的正式发布到国内CMS的变革
  9. 修复ubuntu播放wmv等视频没有声音问题
  10. 向输出到console的文字加样式
  11. DOM 对象方法
  12. 无格式转换php
  13. Spring基于注解开发异常
  14. 微服务之路由网关—zuul
  15. Queue 队列的使用
  16. 第七节 DOM操作应用-高级
  17. ( function(){…} )()和( function (){…} () )是两种立即执行函数
  18. pivot 与 unpivot函数
  19. NodeJs笔记 : express框架创建工程 ----- 路由设计
  20. wangEditor使用简记

热门文章

  1. nginx upstream
  2. 紫书 习题8-18 UVa 11536 (扫描法)
  3. 【BZOJ 1406】 [AHOI2007]密码箱
  4. 【codeforces 67A】Partial Teacher
  5. poj3134 Power Calculus IDA*
  6. Qt资料大全
  7. 怎样实如今Windows下编写的代码,直接在Linux下编译
  8. leetcode——Insertion Sort List 对链表进行插入排序(AC)
  9. Web端本地存储
  10. ARM嵌入式复习