HDU 2544 最短路 SPFA 邻接表 模板
输入保证至少存在1条商店到赛场的路线。
2 1
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0
3
2 代码:<pre name="code" class="cpp">#include<iostream>
#include<cstdio>
#include<cstring>
#define maxx 99999999
#include<queue>
using namespace std;
struct node{
int to,w;
int pre; //表示 同一起点的前一条边
}edge[20005];
int vis[505],dis[505];
int next[20005];
int m,n;
int tot;
void addedge(int u,int v,int w)
{
int j,t=0;
for(j=next[u];j!=-1;j=edge[j].pre) //去重边
{
if(v==edge[j].to&&w>=edge[j].w)
{
t=1;
break;
}
}
if(t==1)
return;
edge[tot].to=v;
edge[tot].w=w;
edge[tot].pre=next[u];// 邻接表的存储
next[u]=tot++; //
edge[tot].to=u; //构造反向边
edge[tot].w=w;
edge[tot].pre=next[v];
next[v]=tot++;
return;
}
int spfa()
{
queue<int>q;
int now;
for(int i=1;i<=m;i++)
{
vis[i]=0;
dis[i]=maxx;
}
dis[1]=0;
vis[1]=1;
q.push(1);
while(!q.empty())
{
now=q.front();
q.pop();
vis[now]=0; //反向边
for(int i=next[now];i!=-1;i=edge[i].pre) //遍历同一起点的全部边(从最后一条边開始)
{
int v=edge[i].to;
if(dis[v]>dis[now]+edge[i].w)
{
dis[v]=dis[now]+edge[i].w;
if(!vis[v])
{
vis[v]=1;
q.push(v);
}
}
}
}
return dis[m];
}
int main()
{
while(~scanf("%d%d",&m,&n))
{
if(m==0&&n==0)
break;
tot=1;
memset(next,-1,sizeof(next));
while(n--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,c);
}
int s=spfa();
cout<<s<<endl;
}
return 0;
}
HDU 2544 最短路 SPFA 邻接表 模板的更多相关文章
- HDU 2544 最短路(邻接表+优先队列+dijstra优化模版)
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 2544 最短路 (spfa)
最短路 Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...
- poj3159最短路spfa+邻接表
https://vjudge.net/contest/66569#problem/K 相当于模板吧,第一次写spfa的 #include<iostream> #include<cst ...
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
- HDOJ 2544 最短路(最短路径 dijkstra算法,SPFA邻接表实现,floyd算法)
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2544 最短路(floyd+bellman-ford+spfa+dijkstra队列优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目大意:找点1到点n的最短路(无向图) 练一下最短路... dijkstra+队列优化: #i ...
- 【算法系列学习】SPFA邻接表最短路 [kuangbin带你飞]专题四 最短路练习 F - Wormholes
https://vjudge.net/contest/66569#problem/F 题意:判断图中是否存在负权回路 首先,介绍图的邻接表存储方式 数据结构:图的存储结构之邻接表 邻接表建图,类似于头 ...
随机推荐
- NGUI: Documentation
Video Tutorials Basic Tutorial (v.2.5.0+) SD & HD atlas switching (advanced) Packed Font (advanc ...
- mysql存储过程及经常使用函数
一.函数 1.数学函数 CEIL()进一取整 SELECT CEIL(1.2);2 FLOOR()舍一取整 SELECT FLOOR(1.9);9 MOD取余数(取模) SELECT MOD(3,8) ...
- mfc对话框不能响应键盘消息
这东西真是奇怪,找了半天原因,最终的发现却是让人抓狂,呵呵 现象:对话框按ESC或回车都不能关闭窗口(我没有处理PreTransplanteMessage),用spy++看,对话框完全收不到键盘消息 ...
- XenCenter注册码一年申请
http://deliver.citrix.com/go/citrix/xenserver_activation?transactionID=2f65d2f134bf485d871291a566d67 ...
- PySide——Python图形化界面
PySide——Python图形化界面 PySide——Python图形化界面入门教程(四) PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your ...
- Main Memory Object-Relational Database Management System
Main Memory Object-Relational Database Management System FastDBMain Memory Relational Database Manag ...
- 用C++设计一个不能被继承的类(用私有构造函数+友元函数)
题目:用C++设计一个不能被继承的类. 分析:这是Adobe公司2007年校园招聘的最新笔试题.这道题除了考察应聘者的C++基本功底外,还能考察反应能力,是一道很好的题目. 在Java中定义了关键字f ...
- 新发现QWindow
http://doc.qt.io/qt-5/qwindow.html#details 不知道该什么时候使用它?
- java反射机制 + Method.invoke解释 getMethod + 反射理解
功能: 通过读取另一个Dll去创建一个控件(Form,Button,TextBox,DataGridView),然后对当中一些属性进行检查. 创建控件的大致流程是,Assembly->Modul ...
- LLVM每日谈21 一些编译器和LLVM/Clang代码
作者:闪亮宁(snsn1984) 一些自己的收藏LLVM/Clang代码,而他自己写一些一点点LLVM/Clang译器的代码.在这里把这些代码库分享出来,欢迎大家交流探讨. 1.crange http ...