题目连接:hdu_2544_最短路

存个自己写的SPFA的板子

 #include<cstdio>
#include<cstring>
#define mst(a,b) memset(a,b,sizeof(a))
#define F(i,a,b) for(int i=a;i<=b;i++) const int N=,inf=<<;
int g[N],v[N*],nxt[N*],w[N*],ed,d[N],in[N],cnt[N],Q[N];
inline void adg(int x,int y,int z){v[++ed]=y,w[ed]=z,nxt[ed]=g[x],g[x]=ed;} bool spfa(int S,int n,int hd=,int tl=){//S为源点,n为点数
F(i,,n)d[i]=inf;
mst(cnt,),mst(in,),cnt[S]=,Q[++tl]=S,d[S]=;
for(int x,i;hd<=tl;)for(i=g[x=Q[hd++]],in[x]=;i;i=nxt[i])
if(d[v[i]]>d[x]+w[i]){
d[v[i]]=d[x]+w[i];
if(!in[v[i]]){
in[v[i]]=,d[v[i]]<d[Q[hd]]?Q[--hd]=v[i]:Q[++tl]=v[i];//SLF优化
if(++cnt[v[i]]>n)return ;//有负环
}
}
return ;
} int n,m;
int main(){
while(scanf("%d%d",&n,&m),n+m){
mst(g,),ed=;
int x,y,z;
F(i,,m)scanf("%d%d%d",&x,&y,&z),adg(x,y,z),adg(y,x,z);
spfa(,n),printf("%d\n",d[n]);
}
return ;
}

最新文章

  1. javascript动画系列第一篇——模拟拖拽
  2. 报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.
  3. TCP/IP, WebSocket 和 MQTT
  4. C# 将PowerPoint文件转换成PDF文件
  5. WinForm DataGridView根据选中的行多删
  6. ios xcode 下 报出 ”xx“is missing from working copy 的问题
  7. smarty中math函数的用法
  8. ThinkPHP讲解(五)——数据库配置及Model数据模型层、查询
  9. 时间格式nls_date_format的设置
  10. Mac OSX下面的博客客户端Marsedit使用
  11. 在 Windows 上测试 Redis Cluster的集群填坑笔记
  12. 项目总结一:响应式之CSS3 媒体查询
  13. TCP的核心系列 — ACK的处理(二)
  14. C语言之实现随机数产生算法
  15. vue 双向数据绑定原理
  16. pytest 12 函数传参和fixture传参数request
  17. Flex(ActionScript)与JavaScript交互的两种方式示例
  18. Peer Programming Project: 4 Elevators Scheduler 附加题 157 165
  19. CSS VISUAL RULES
  20. element-ui 日期选择范围限制,只允许选择上下浮动一个月内的日期

热门文章

  1. Windows kernel pool 初探(2014.12)
  2. wcf中的使用全双工通信
  3. 转载 deep learning:八(SparseCoding稀疏编码)
  4. 《JavaScript高级程序设计》读书笔记 ---操作符二
  5. HDU 3499 Flight spfa+dp
  6. VBS脚本实例
  7. assert()函数用法
  8. 第7章 一个java源文件中只能有一个public类
  9. postgres-xl 集体搭建(2)
  10. Nginx 和 IIS 实现动静分离【转载】