最短路(dijskra+SPFA+Bellman)
最短路
Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 82 Accepted Submission(s) : 51
#include<stdio.h>
#include<string.h>
const int INF=0x3f3f3f3f;
const int MAXN=;
#define MIN(x,y) (x<y?x:y)
int map[MAXN][MAXN];
int vis[MAXN],d[MAXN];
int N;
void initial(){
memset(d,INF,sizeof(d));
memset(vis,,sizeof(vis));
memset(map,INF,sizeof(map));
}
void dijkscra(int s){
int k;
d[s]=;
while(true){
k=-;
for(int i=;i<=N;i++)
if(!vis[i]&&(k==-||d[i]<d[k]))k=i;
if(k==-)break;
vis[k]=;
for(int i=;i<=N;i++){
d[i]=MIN(d[i],d[k]+map[k][i]);
}
}
}
int main(){
int M;
int a,b,c;
while(~scanf("%d%d",&N,&M),N||M){
initial();
while(M--){
scanf("%d%d%d",&a,&b,&c);
if(c<map[a][b]){
map[a][b]=map[b][a]=c;
}
}
dijkscra();
printf("%d\n",d[N]);
}
return ;
}
SPFA算法:
#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f;
const int MAXN=;
const int MAXM=;
int top,vis[MAXN],dis[MAXN],head[MAXM];
int N,M;
queue<int>dl;
struct Edge{
int from,to,value,next;
};
Edge edg[MAXM];
void initial(){
top=;
memset(vis,,sizeof(vis));
memset(dis,INF,sizeof(dis));
memset(head,-,sizeof(head));
while(!dl.empty())dl.pop();
}
void add(int u,int v,int value){
Edge E={u,v,value,head[u]};
edg[top]=E;
head[u]=top++;
}
void SPFA(int sx){
dl.push(sx);
dis[sx]=;
vis[sx]=;
while(!dl.empty()){
int u=dl.front();
dl.pop();
vis[u]=;
for(int i=head[u];i!=-;i=edg[i].next){
int v=edg[i].to;
if(dis[u]+edg[i].value<dis[v]){
dis[v]=dis[u]+edg[i].value;
if(!vis[v]){
vis[v]=;
dl.push(v);
}
}
}
}
printf("%d\n",dis[N]);
}
int main(){
int a,b,c;
while(~scanf("%d%d",&N,&M),N|M){
initial();
while(M--){
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
}
SPFA();
}
return ;
}
Bellman:
#include<stdio.h>
#include<string.h>
#define MIN(x,y)(x<y?x:y)
#define mem(a,b) memset(a,b,sizeof(a))
const int INF=0x3f3f3f3f;
const int MAXN=;
const int MAXM=<<;
struct Node{
int u,v,w;
};
Node dt[MAXM];
int dis[MAXN];
int top,N;
void add(int u,int v,int w){
dt[top].u=u;
dt[top].v=v;
dt[top++].w=w;
}
void Bellman(int sx){
mem(dis,INF);
dis[sx]=;
for(int j=;j<=N;j++)
for(int i=;i<top;i++){
int u=dt[i].u,v=dt[i].v,w=dt[i].w;
dis[v]=MIN(dis[v],dis[u]+w);
}
}
int main(){
int M;
while(~scanf("%d%d",&N,&M),N||M){
int a,b,c;
top=;
while(M--){
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
}
Bellman();
printf("%d\n",dis[N]);
}
return ;
}
最短路(dijskra+SPFA+Bellman)的更多相关文章
- 一个人的旅行(floyd+dijskra+SPFA+Bellman)
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 模板C++ 03图论算法 1最短路之单源最短路(SPFA)
3.1最短路之单源最短路(SPFA) 松弛:常听人说松弛,一直不懂,后来明白其实就是更新某点到源点最短距离. 邻接表:表示与一个点联通的所有路. 如果从一个点沿着某条路径出发,又回到了自己,而且所经过 ...
- Wormholes(SPFA+Bellman)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36860 Accepted: 13505 Descr ...
- ACM/ICPC 之 最短路-Floyd+SPFA(BFS)+DP(ZOJ1232)
这是一道非常好的题目,融合了很多知识点. ZOJ1232-Adventrue of Super Mario 这一题折磨我挺长时间的,不过最后做出来非常开心啊,哇咔咔咔 题意就不累述了,注释有写,难点在 ...
- POJ 2449Remmarguts' Date K短路模板 SPFA+A*
K短路模板,A*+SPFA求K短路.A*中h的求法为在反图中做SPFA,求出到T点的最短路,极为估价函数h(这里不再是估价,而是准确值),然后跑A*,从S点开始(此时为最短路),然后把与S点能达到的点 ...
- ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- BZOJ_1614_ [Usaco2007_Jan]_Telephone_Lines_架设电话线_(二分+最短路_Dijkstra/Spfa)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1614 分析 类似POJ_3662_Telephone_Lines_(二分+最短路) Dijks ...
- 六度分离(floyd算法+dijskra+SPFA)
六度分离 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 畅通工程续(dijskra+SPFA)
畅通工程续 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submiss ...
随机推荐
- Struts2 请求处理步骤
1) 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 )这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器 ...
- 几种MEMS陀螺仪(gyroscope)的设计和性能比较
现在市场上的MEMS陀螺仪主要有SYSTRON.BOSCH和INVENSENSE设计和生产.前两者设计的陀螺仪属高端产品,主要用于汽车.后者的属低端产品,主要用于消费类电子,象任天堂的Wii.ADI2 ...
- ISSkin 使用技巧,WinXP 下的窗口阴影
原文 http://restools.hanzify.org/article.asp?id=109 是否觉得在使用 ISSkin 的时候感觉窗口太过平板,尤其对于那些窗口边缘和窗口内部颜色一致的皮肤尤 ...
- Servlet中Web.xml的配置详解
1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码. DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用 ...
- Repeated meta-data items
B.2 Generating your own meta-data using the annotation processor You can easily generate your own co ...
- JIRA官方:JIRA报表与分析
访问重要的问题 JIRA系统内置的过滤器可以使你快速访问最重要的问题.通过保存和收藏自定义的过滤器,你可以随时了解项目和团队的优先级. 保持团队同步 创建一个过滤器,可以保存你的任何搜索条件.通过分享 ...
- uva 10245 The Closest Pair Problem_枚举
题意:求任意两点之间的距离的最少一个距离 思路:枚举一下就可以了 #include <iostream> #include<cstdio> #include<cmath& ...
- UVa 1583 Digit Generator(数学)
题意 假设a加上a全部数位上的数等于b时 a称为b的generator 求给定数的最小generator 给的数n是小于100,000的 考虑到全部数位和最大的数99,999的数位和也才45 ...
- AS3: Socket 数据包 收 发
AS3.0中使用Socket使用tcp服务器协议,它是一种流协议,不停的将分片传输给客户端,P作为流,发包是不会整包到达的,而是源源不断的. 它不同于UDP服务器协议,UDP作为数据包协议,整包到达. ...
- base64图片在各种浏览器的兼容性处理
IE浏览器目前最高的版本是v11,而微软放弃了IE,转向新的浏览器开发,并取名为Edge.base64图片在IE9及以后的图片均能显示没有问题,而Firefox, Chrome, Safari等非IE ...