hdu 2544 最短路(SPFA算法)
本题链接:点击打开链接
本题大意:
首先输入一个n,m。代表有n个点。m条边。然后输入m条边,每条边输入两个点及边权。1为起点,n为终点。输入两个零表示结束。
解题思路:
本题能够使用SPFA算法来做。此算法与dijkstra算法的差别在于,此算法能够计算边权为负值的情况。使用此算法首先须要用邻接表建图,用dis数组存放当前点距起点的最短权值之和。用mark数组标记已使用过的点。SPFA算法过程与广度优先搜索相似,此代码与BFS的差别在于已经标记的点。在再次取出来的时候要取消标记。
本题AC代码例如以下:
#include<stdio.h>
#include<string.h>
#include<queue>
#define MAXN 110
#define MAXM 20200
#define INF 0x3f3f3f3f
using namespace std;
int head[MAXN];
int mark[MAXN];
int dis[MAXN];
int num;
struct node{
int from;
int to;
int val;
int next;
};
node edge[MAXM];
void getmap(int u,int v,int w)
{
node e={u,v,w,head[u]};
edge[num]=e;
head[u]=num++;
}
void SPFA(int s)
{
memset(mark,0,sizeof(mark));
memset(dis,INF,sizeof(dis));
queue<int>q;
q.push(s);
dis[s]=0;
mark[s]=1;
while(!q.empty())
{
int top=q.front();
q.pop();
mark[top]=0;
for(int i=head[top];i!=-1;i=edge[i].next)
{
int u=edge[i].to;
if(dis[u]>dis[top]+edge[i].val)
{
dis[u]=dis[top]+edge[i].val;
if(!mark[u])
{
mark[u]=1;
q.push(u);
} }
}
}
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m),n||m)
{
memset(head,-1,sizeof(head));
num=0;
for(int i=0;i<m;i++)
{
int a,b,d;
scanf("%d%d%d",&a,&b,&d);
getmap(a,b,d);
getmap(b,a,d);
}
SPFA(1);
printf("%d\n",dis[n]);
}
return 0;
}
hdu 2544 最短路(SPFA算法)的更多相关文章
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- HDOJ/HDU 2544 最短路---dijkstra算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 这题的思路可以见这里(同一类型):http://blog.csdn.net/xiaozhuaix ...
- hdu 2544 最短路 (spfa)
最短路 Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...
- HDU 2544 最短路 SPFA 邻接表 模板
Problem Description 在每年的校赛里,全部进入决赛的同学都会获得一件非常美丽的t-shirt.可是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以如今他们想 ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 2544最短路 (迪杰斯特拉算法)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others) Me ...
- hdu 2544 最短路
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shi ...
- hdu 2544最短路——最短路的初次总结 UESTC 6th Programming Contest Online
这是一道标准的模板题,所以拿来作为这一段时间学习最短路的总结题目. 题意很简单: 有多组输入数据,每组的第一行为两个整数n, m.表示共有n个节点,m条边. 接下来有m行,每行三个整数a, b, c. ...
随机推荐
- CE工具里自带的学习工具--第六关
这一步原理: 相当于有一个变量 int a=100; int *p=&a; 点击修改值, 在ce工具里可以找到a的值. a的地址. 但是在实际代码里,并不是这么处理的, 是 通过指针改变这 ...
- CAD插入背景图片(网页版)
把图片作为背景图片可见但是不能编辑操作. 主要用到函数说明: _DMxDrawX::DrawImageToBackground 绘光栅图到背景.详细说明如下: 参数 说明 BSTR sFileName ...
- Windows:32位程序运行在64位系统上注册表会重定向
参考资料 微软注册表英文文档 StackOverflow社区回答 1.注册表位置 64bit系统(Windows Server 2008 R2只有64bit系统)的注册表分32 位注册表项和64位注册 ...
- Perl语言入门:第六章习题:处理用户所指定的名字并汇报相应的姓。
37 print "\n----------------------------------_exercise_6_1--------------------------\n"; ...
- 关于idea的目录结构如何变成树状,也就是横向变纵向
横向 竖向 方法:
- python pandas读写excel
import pandas as pd import numpy as np df = pd.read_csv("result.csv") # csv # df = pd.read ...
- 洛谷——P1731 [NOI1999]生日蛋糕
P1731 [NOI1999]生日蛋糕 搜索+剪枝 常见的剪枝: 若当前状态+后面所要搜索的最差的状态$>$或是$<$最后的状态,就返回 预处理最差的状态 #include<iost ...
- CSU 2018年12月月赛 A 2213: Physics Exam
Description 高中物理老师总认为给学生文本形式的问题比给纯计算形式的问题要求更高.毕竟,学生首先得阅读和理解问题. 因此,他们描述一个问题不像”U=10V,I=5A,P=?”,而是”有一个含 ...
- [Python3网络爬虫开发实战] 1.6.2-Tornado的安装
Tornado是一个支持异步的Web框架,通过使用非阻塞I/O流,它可以支撑成千上万的开放连接,效率非常高,本节就来介绍一下它的安装方式. 1. 相关链接 GitHub:https://github. ...
- asp.net:Parser Error & HTTP 错误 500.21 - Internal Server Error
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABEcAAAF8CAIAAACiwUIQAAAgAElEQVR4nO2dyZHzOpZGaVEaADNkBB ...