最短路(Dijkstra模板题)
就不写题目链接了
Sample Input
5 5 点个数a,边个数b
1 2 20 点,点,权值
2 3 30
3 4 20
4 5 20
1 5 100
求出1到a的最短距离
Sample Output
90
防止有重边
#include <iostream>
#include <cstdio>
using namespace std;
#define Max 1000+10
#define INF 0x3f3f3f3f
int cost[Max][Max];
int lowcost[Max];
bool vis[Max];
int N,T;
void dijkstra(int s)
{ int i,u,v;
for(u=;u<=N;u++)
{
lowcost[u]=INF;
vis[u]=;
}
lowcost[]=;
int Min=INF; while()
{
int p=-;
for(u=;u<=N;u++)
{
if(!vis[u]&&(p==-||lowcost[u]<lowcost[p]))
p=u;
}
if(p==-) break;
vis[p]=;
for(u=;u<=N;u++)
if(!vis[u]&&(lowcost[p]+cost[p][u])<lowcost[u])
lowcost[u]=lowcost[p]+cost[p][u];
}
}
int main()
{
int i,j;
int a,b,w;
freopen("in.txt","r",stdin);
while(scanf("%d%d",&T,&N)!=EOF)
{
for(i=;i<=N;i++)
{
for(j=;j<=N;j++)
{
if(j==i)
cost[i][j]=;
else
cost[i][j]=cost[j][i]=INF;
}
}
for(i=;i<T;i++)
{
scanf("%d%d%d",&a,&b,&w);
if(w<cost[a][b])
{
cost[a][b]=cost[b][a]=w;
}
}
dijkstra();
printf("%d\n",lowcost[N]);
}
}
#include <iostream>
#include <cstdio>
using namespace std;
#define Max 200+10
#define INF 0x3f3f3f3f
int cost[Max][Max];
int lowcost[Max];
bool vis[Max];
int N,M;
void dijkstra(int s)
{
int u,i,p;
for(u=;u<N;u++)
{
vis[u]=;
lowcost[u]=INF;
}
lowcost[s]=;
while()
{
p=-;
for(u=;u<N;u++)
if(!vis[u]&&(p==-||lowcost[u]<lowcost[p]))
p=u;
if(p==-) break;
vis[p]=;
for(u=;u<N;u++)
if(!vis[u]&&(lowcost[p]+cost[u][p])<lowcost[u])
lowcost[u]=lowcost[p]+cost[u][p];
}
}
int main()
{
int i,j;
int a,b,w,s,e;
freopen("in.txt","r",stdin);
while(~scanf("%d%d",&N,&M))
{ for(i=;i<N;i++)
for(j=;j<N;j++)
if(i==j) cost[i][j]=cost[j][i]=;
else cost[i][j]=cost[j][i]=INF; for(i=;i<M;i++)
{
scanf("%d%d%d",&a,&b,&w);
if(w<cost[a][b]) cost[a][b]=cost[b][a]=w; /*解决重边*/
}
scanf("%d%d",&s,&e);
dijkstra(s);
if(lowcost[e]==INF)
printf("-1\n");
else
printf("%d\n",lowcost[e]);
}
}
最短路(Dijkstra模板题)的更多相关文章
- HDU-2544 最短路 Dijkstra模板题
题目链接:https://vjudge.net/problem/HDU-2544 题意: 题目要求找到节点1到节点n之间的一条最短路 分析: Dijkstra模板题 单源最短路径,可以用dijkstr ...
- HDU 2544最短路dijkstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- HDU 2544 最短路(模板题——Floyd算法)
题目: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你 ...
- hdu 2544 hdu 1874 poj 2387 Dijkstra 模板题
hdu 2544 求点1到点n的最短路 无向图 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 ...
- 单源最短路——Dijkstra模板
算法思想: 类似最小生成树的贪心算法,从起点 v0 每次新拓展一个距离最小的点,再以这个点为中间点,更新起点到其他点的距离. 算法实现: 需要定义两个一维数组:①vis[ i ] 表示是否从源点到顶点 ...
- POJ 2387 Til the Cows Come Home (dijkstra模板题)
Description Bessie is out in the field and wants to get back to the barn to get as much sleep as pos ...
- POJ 1502:MPI Maelstrom Dijkstra模板题
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6499 Accepted: 4036 Des ...
- 图论--最短路-- Dijkstra模板(目前见到的最好用的)
之前的我那个板子,老是卡内存,不知道为什么,我看别人过的那个题都是结构体,我就开始对自己板子做了修改,然后他奶奶的就过了,而且速度也提高了,内存也小了.(自从用了这个板子,隔壁小孩馋哭了)也不知道为啥 ...
随机推荐
- Constructing Roads In JGShining's Kingdom(HDU 1025 LIS nlogn方法)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- iOS学习之视图加载过程中会触发的方法(loadView/viewDidLoad/didReceiveMemoryWarning)
1.loadView 这是视图控制器用来加载根视图的方法; 如果需要将自定义的视图作为根视图,则不需要调用父类对该方法的实现([super loadView]);直接将自定义视图通过self.view ...
- jdk1.7 JDBC连接SQL Server2008
路由器网:http://www.ming4.com/news/2355.html Jackie的博客:http://blog.163.com/jackie_howe/blog/static/19949 ...
- 转载:常见EXE文件反编译工具
PE Explorer V1.99 R5 绿色汉化特别版_强大的可视化汉化集成工具 功能极为强大的可视化汉化集成工具,可直接浏览.修改软件资源,包括菜单.对话框.字符串表等: 另外,还具备有 W32D ...
- android的微信签名
目标: 已经在微信官网申请了账号了,想要在上面开发应用,必须首先对应用进行审核.在审核之前,需要填写应用的相关信息,包括名称.图标.用途说明.签名等. 下面介绍如何获取程序的签名. 解决方案: 选择程 ...
- CMD获取当前目录的绝对路径 (转)
@echo offecho 当前盘符:%~d0echo 当前盘符和路径:%~dp0echo 当前批处理全路径:%~f0echo 当前盘符和路径的短文件名格式:%~sdp0echo 当前CMD默认目录: ...
- WPF-24:绘制正多边形
一般来说绘制正N边形,使用Blend直接画出来就好.不过可能是博主受WInform影响比较大,比较喜欢使用画出来的图形.如果要绘制正N边形,前面的绘制五角星的公式可以通用的(http://blog.c ...
- C# 使用枚举获取对应的数组值时
using System; enum Move { walk, run } class Program { static float[] speedAry = { 50.0f, 200.0f }; p ...
- android jni ——Field & Method --> Accessing Field
现在我们知道了怎样使用native code访问简单的数据类型和引用参考类型(string,array),下面我们来介绍怎样让jni代码去访问java中的成员变量和成员函数,然后可以再jni中回调ja ...
- Cordova for android怎样在App中处理退出button事件
项目须要在HTML5 Android App中增加对返回键的处理,发现直接在Activity中加返回键处理代码不起作用,分析cordova源代码发现返回键已经被WebView处理掉了,所以仅仅能在js ...