题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2662

分层图;

我也不知道我写的是不是 bfs (dijkstra?)。

代码如下:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<queue>
  5. using namespace std;
  6. int n,m,k,head[],ct,dis[][];
  7. bool vis[][];
  8. struct N{
  9. int to,next,w;
  10. N(int t=,int n=,int w=):to(t),next(n),w(w) {}
  11. }edge[];
  12. struct P{
  13. int d,f,bh;
  14. P(int d=,int f=,int b=):d(d),f(f),bh(b) {}
  15. bool operator < (const P &y) const
  16. {
  17. return d>y.d;//priority_queue 是从大到小排序
  18. }
  19. };
  20. priority_queue<P>q;
  21. void add(int x,int y,int z){edge[++ct]=N(y,head[x],z); head[x]=ct;}
  22. void bfs()
  23. {
  24. memset(dis,0x3f,sizeof dis);
  25. dis[][]=; q.push(P(,,));
  26. while(q.size())
  27. {
  28. int x=q.top().bh,d=q.top().d,f=q.top().f; q.pop();
  29. if(vis[x][f])continue;
  30. vis[x][f]=;
  31. if(x==n)
  32. {
  33. printf("%d",d);
  34. return;
  35. }
  36. for(int i=head[x];i;i=edge[i].next)
  37. {
  38. int u=edge[i].to;
  39. if(f<k&&!vis[u][f+]&&dis[u][f+]>d+edge[i].w/)
  40. {
  41. dis[u][f+]=d+edge[i].w/;
  42. q.push(P(dis[u][f+],f+,u));
  43. }
  44. if(dis[u][f]>d+edge[i].w&&!vis[u][f])
  45. {
  46. dis[u][f]=d+edge[i].w;
  47. q.push(P(dis[u][f],f,u));
  48. }
  49. }
  50. }
  51. }
  52. int main()
  53. {
  54. scanf("%d%d%d",&n,&m,&k);
  55. for(int i=,x,y,z;i<=m;i++)
  56. {
  57. scanf("%d%d%d",&x,&y,&z);
  58. add(x,y,z); add(y,x,z);
  59. }
  60. bfs();
  61. return ;
  62. }

bzoj2662 [BeiJing wc2012]冻结 ——分层图的更多相关文章

  1. BZOJ2662[BeiJing wc2012]冻结——分层图最短路

    题目描述 “我要成为魔法少女!”     “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„”     在这个愿望被实现以后的世界里,人们享受着魔法卡片(Spe ...

  2. [bzoj2662 BeiJing wc2012] 冻结 (分层图+最短路)

    传送门 Description "我要成为魔法少女!" "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于卡片之中„„&q ...

  3. 【bzoj2662】[BeiJing wc2012]冻结 分层图Spfa

    原文地址:http://www.cnblogs.com/GXZlegend 题目描述 “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„ ...

  4. bzoj 2662 [BeiJing wc2012]冻结——分层图

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2662 这种的都是分层图. #include<iostream> #include ...

  5. BZOJ2662: [BeiJing wc2012]冻结 spfa+分层图

    Description “我要成为魔法少女!”     “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„”        在这个愿望被实现以后的世界里,人们享 ...

  6. 【最短路】【Heap-Dijkstra】【分层图】bzoj2662 [BeiJing wc2012]冻结

    裸的分层图最短路. #include<cstdio> #include<cstring> #include<queue> #include<algorithm ...

  7. BZOJ2662 [BeiJing wc2012]冻结

    网上的题解都是分层图+spfa或者dijkstra 我觉得dijk太难写了,懒得写,看了一下数据范围$N=50$,这显然是出题人勾引人犯罪 我决定使用floyd的做法,令$f[i][j][t](k)$ ...

  8. bzoj2662: [BeiJing wc2012]冻结 最短路 建图

    好久没有1A题啦♪(^∇^*) 一个sb建图,我居然调样例调了10min 看起来是双向边,其实在建图的时候要当成有向图, 否则他会时间倒流(233) 把每个点裂成k个点,然后把每条边裂成4条边(正向反 ...

  9. BZOJ2662[BeiJing wc2012]冻结【SPFA】

    “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„”        在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard ...

随机推荐

  1. vue组件---组件注册

    (1)组件名 在注册一个组件的时候,我们始终需要给它一个名字.比如在全局注册的时候我们已经看到了: Vue.component('my-component-name', { /* ... */ }) ...

  2. 02Microsoft SQL Server 安装,卸载,系统服务,系统组件及系统数据库

    Microsoft SQL Server 安装,卸载,系统服务,系统组件及系统数据库 1. Microsoft SQL Server 安装 通过单击下拉框,选择浏览,然后在Active Directo ...

  3. idea_复制包名类名

  4. 微信小程序 setData动态修改数据数组的值

    1.问题说明 有一组数据,用来存储图片路径,动态修改图片的路径来上传图片,而小程序JS只能通过事件获取时机和setData方法修改数据来改变view. 而用这样写的方式明显是错误的 2.解决办法 字符 ...

  5. 总结在Linux终端中进行算术运算的6种方式

    1.使用bash 使用双括号可以像C语言一样直接使用运算符进行计算. +)) a=$((*)) echo $a b=$(($a-)) echo $b d=$(($b/)) echo $d e=$(($ ...

  6. Linux:iscsi存储服务器配置

    服务器添加4块硬盘 mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde 记下UUID值 mdadm -D /de ...

  7. session 分布式处理-----https://segmentfault.com/a/1190000013447750?utm_source=tag-newest

    第一种:粘性session 粘性Session是指将用户锁定到某一个服务器上,比如上面说的例子,用户第一次请求时,负载均衡器将用户的请求转发到了A服务器上,如果负载均衡器设置了粘性Session的话, ...

  8. HDU 1325 拓扑排序

    根据题目所给的3个不符合情况的条件,一个个判断图是否符合这3个条件即可 1.不能出现内部环,拓扑排序判断 2.不能有超过1个点的入度为0,因为只有一个树根 3.每个点最多一个入度 这里要注意的一点是这 ...

  9. HDU 1042 大数计算

    这道题一开始就采用将一万个解的表打好的话,虽然时间效率比较高,但是内存占用太大,就MLE 这里写好大数后,每次输入一个n,然后再老老实实一个个求阶层就好 java代码: /** * @(#)Main. ...

  10. Eclipse查看方法/类调用的方法

    1.(首推)双击选中该方法/类,[Ctrl]+[Alt]+[H](Open Call Hierarchy) 2.(次推)选中该方法/类,[Ctrl]+[Shift]+[G](References) 3 ...