spfa

 #include <stdio.h>
#include <queue>
using namespace std; #define RANGE 101
#define MAX 0x3f3f3f3f
int cost[RANGE][RANGE];
int d[RANGE];
bool used[RANGE];
int n,m; void spfa( int s )
{
int i,now;
// 初始化
for( i=;i<=n;++i )
{
d[i]=MAX;
used[i]=false;
} d[s]=;
queue <int> q;
q.push(s);
used[s] = true; while(!q.empty())
{
now = q.front();
q.pop();
used[now] = false;
for(i = ; i <= n; i++)
{
if(d[i] > d[now] + cost[now][i])
{
d[i] = d[now] + cost[now][i];
if(used[i] == )
{
q.push(i);
used[i] = true;
}
}
}
}
} int main()
{
int i,j,A,B,C;
while( scanf("%d%d",&n,&m) )
{
if( !n && !m ) break;
// 初始化
for( i=;i<=n;++i )
for( j=;j<=i;++j )
if( i==j ) cost[i][j]=;
else cost[i][j]=cost[j][i]=MAX; for( i=;i<m;++i )
{
scanf("%d%d%d",&A,&B,&C);
cost[A][B]=cost[B][A]=C;
} spfa();
printf("%d\n",d[n]);
}
return ;
}

dijkstra

 #include <stdio.h>
#define MAX 0x3f3f3f3f
#define RANGE 101 int cost[RANGE][RANGE];
int d[RANGE];
bool used[RANGE]; int n,m;
int Min( int a,int b )
{
return a<b?a:b;
} void Dijkstra( int s )
{
int i,v,u;
for( i=;i<=n;++i )
{
used[i]=false;
d[i]=cost[][i];
}
d[s]=; while( true )
{
v=-;
for( u=;u<=n;++u )
if( !used[u] && ( v==- || d[u]<d[v]) )
v=u;
if( v==- ) break;
used[v]=true; for( u=;u<=n;++u )
d[u]=Min( d[u],d[v]+cost[v][u] );
}
} int main()
{
int A,B,C,i,j; while( scanf("%d%d",&n,&m) )
{
if( !n && !m ) break; // 初始化
for( i=;i<=n;++i )
for( j=;j<=i;++j )
if( i==j ) cost[i][j]=;
else cost[i][j]=cost[j][i]=MAX; for( i=;i<m;++i )
{
scanf("%d%d%d",&A,&B,&C);
cost[A][B]=cost[B][A]=C;
} Dijkstra();
printf("%d\n",d[n]);
}
return ;
}

floyd

 #include <stdio.h>
#define MAX 0x3f3f3f3f
#define RANGE 105 int d[RANGE][RANGE];
int n; int Min( int a,int b )
{
return a<b?a:b;
}
void warshall_floyd( void )
{
int i,j,k;
for( k=;k<=n;++k )
for( i=;i<=n;++i )
for( j=;j<=n;++j )
d[i][j]=Min( d[i][j],d[i][k]+d[k][j] );
} int main()
{
int m,A,B,C,i,j; while( scanf("%d%d",&n,&m) )
{
if( !n && !m ) break; // 初始化
for( i=;i<=n;++i )
for( j=;j<=i;++j )
{
if( i==j ) d[i][j]=;
else d[i][j]=d[j][i]=MAX;
} // 输入
for( i=;i<m;++i )
{
scanf("%d%d%d",&A,&B,&C);
d[A][B]=d[B][A]=C;
} // floyd算法求最短路
warshall_floyd();
printf("%d\n",d[][n]);
}
return ;
}

最短路 spfa, dijkstra, Floyd的更多相关文章

  1. ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  2. hdoj2544 最短路(Dijkstra || Floyd || SPFA)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路 最短路算法模板题,求解使用的Dijkstra算法.Floyd算法.SPFA算法可以当做求解 ...

  3. 最短路-SPFA算法&Floyd算法

    SPFA算法 算法复杂度 SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环. SPFA一般情况复杂度是O(m)最坏情况下复杂度和朴素 ...

  4. hdu3665-Seaside(SPFA,dijkstra,floyd)

    Seaside Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  5. HDU 1874 畅通工程续 SPFA || dijkstra||floyd

    http://acm.hdu.edu.cn/showproblem.php?pid=1874 题目大意: 给你一些点,让你求S到T的最短路径. 我只是来练习一下SPFA的 dijkstra+邻接矩阵 ...

  6. HDU 1874 畅通工程续(最短路/spfa Dijkstra 邻接矩阵+邻接表)

    题目链接: 传送门 畅通工程续 Time Limit: 1000MS     Memory Limit: 65536K Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路. ...

  7. HDU 1874 SPFA/Dijkstra/Floyd

    这题作为模板题,解法好多... 最近周围的人都在搞图论阿,感觉我好辣鸡,只会跟风学习. 暂时只有SPFA和Dijkstra的 SPFA (邻接表版.也可以写成临接矩阵存图,但题目可能给出平行边的,所以 ...

  8. 最短路(Dijkstra,Floyd,Bellman_Ford,SPFA)

    当然,这篇文章是借鉴大佬的... 最短路算法大约来说就是有4种——Dijkstra,Floyd,Bellman_Ford,SPFA 接下来,就可以一一看一下... 1.Dijkstra(权值非负,适用 ...

  9. 关于SPFA Bellman-Ford Dijkstra Floyd BFS最短路的共同点与区别

    关于模板什么的还有算法的具体介绍 戳我 这里我们只做所有最短路的具体分析. 那么同是求解最短路,这些算法到底有什么区别和联系: 对于BFS来说,他没有松弛操作,他的理论思想是从每一点做树形便利,那么时 ...

  10. 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)

    关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...

随机推荐

  1. 消除textarea的空格de长度值

    在项目中因为用到文本域textarea输入textarea的长度总是显示 25 那是还怀疑textarea自带有value长度? placeholder属性的长度? 那时候想到类似:ul无序列表li元 ...

  2. 洛谷 P1754 球迷购票问题

    P1754 球迷购票问题 题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的 ...

  3. 权重轮询调度算法 java版本号

    权重轮询调度算法(Weighted Round-Robin Scheduling)--java版本号 因为每台server的配置.安装的业务应用等不同.其处理能力会不一样.所以,我们依据server的 ...

  4. java基础 this keyword!

    为了程序的可读性,通常将一个类中的表示同一属性的变量进行统一的命名.可是这样做又会导致成员变量与局部变量名字冲突导致无法訪问成员变量.为了解决问题,java中引入了this这个keyword!所以th ...

  5. swift具体解释之八---------------下标脚本

    swift具体解释之八-----下标脚本 下标脚本 能够定义在类(Class).结构体(structure)和枚举(enumeration)这些目标中.能够觉得是訪问对象.集合或序列的快捷方式.不须要 ...

  6. Mysql基础第二部分,针对以后python使用

    #外键 表与表相连 列名 MUL 外键 参照完整性 不能添加另一个表没有的字段create table study_record( id int auto_increment primary key, ...

  7. JavaScript 与Document

    JavaScript JavaScript   是脚本语言, 需要有宿主文件,  他的宿主文件是HTML文件. 可以写在head中  body中 和</heml>之后   一般写在< ...

  8. IBM软件技术峰会归来

    为期两天在北京国际饭店会议中心的IBM软件技术峰会已近结束,此次大会最大的收获是能和沃森实验室的王博士沟通探讨人工智能软件的发展问题.领略到IBM 云计算首席架构师Jason R.McGee如何呼风唤 ...

  9. n阶幻方问题

    转载自:http://blog.csdn.net/fengchaokobe/article/details/7437767 目录        第一节 n阶幻方问题       第二节 由n阶幻方引发 ...

  10. 利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化

    前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将 ...