#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<queue>
#include<string.h>
#include<stdlib.h>
using namespace std;
#define INF 0xfffffff
#define N 1010 int maps[N][N], dist[N];//distance保存表示从起点到i点的距离 maps保存图
bool visit[N];//标记这个店是否被参观过
int point, side;//点,边
void Init();
int Dij(int Star, int End);
int main()
{
while(cin >> point >> side, point + side)
{
Init();//Initial
int pa, pb, i, t;
for(i=0; i<side; i++)
{
cin >>pa>>pb>>t;
maps[pa][pb]=min(maps[pa][pb], t);//因为也许反向走路的长度不同
maps[pb][pa]=maps[pa][pb];
}
int answer=Dij(1, point);
cout << answer << endl;
}
return 0;
}
void Init()
{
for(int i=0; i<=point; i++)
{
visit[i]=false;
dist[i]=INF;
for(int j=0; j<=i; j++)//其实不明白这里为什么这样写,即便是我自己写的
maps[i][j]=maps[j][i]=INF;//真的很神奇,其实这就等同于for(int j=0; j<=point; j++) maps[i][j]=INF; }
}
int Dij(int Star, int End)
{
dist[Star]=0;
for(int i=1; i<=point; i++)
{
int index, Min;
index=0, Min=INF;//index 代表与i距点最近的点的下标
for(int j=1; j<=point; j++)
{
if(!visit[j]&&Min>dist[j])
Min=dist[j], index=j;
}//代表找到了距1点最近的一个点 这是一个二维矩阵
visit[index]=true;
for(int j=1; j<=point; j++)
{
if(!visit[j]&&dist[j]>dist[index]+maps[index][j])
dist[j]=dist[index]+maps[index][j];
}
}
return dist[End];
}

  

连接表代码
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
#define INF 0xfffffff
#define maxn 1002
struct node
{
int e, w;
};
vector<node> G[maxn];
int dist[maxn];//表示从起点到第i点的距离
bool vis[maxn];//判断这个点是否被参观过
int m, n;//边数 m 顶点数 n void Init()
{
memset(vis, false, sizeof(vis)); for(int i=; i<=n; i++)
{
dist[i] = INF;
G[i].clear();
}
} int Dij(int Star,int End)//起点 --- 终点
{
dist[Star] = ;
for(int i=; i<=n; i++)
{
int index = , Min = INF;
for(int j=; j<=n; j++)
{
if( !vis[j] && Min > dist[j] )//找出没有被参观过,并且距离起点最近的点
Min = dist[j], index = j;
}
vis[index] = true;
int len = G[index].size();
for(int j=; j<len; j++)//更新所有未曾到达的点距离,使之成为最近的点
{
node P;
P = G[index][j]; if( !vis[P.e] && dist[P.e] > dist[index] + P.w )
{
dist[P.e] = dist[index] + P.w;
}
}
}
return dist[End];
} int main()
{
node P;
while(cin >> n >> m, m + n)
{
Init();
int a, b , c; for(int i=; i<m; i++)
{
cin >> a >> b >> c;
P.e = b, P.w = c;
G[a].push_back(P);
P.e = a;
G[b].push_back(P);
} int ans = Dij(,n);
cout << ans << endl;
}
return ;
}
 

HDU2544最短路模板,的更多相关文章

  1. POJ 2449Remmarguts' Date K短路模板 SPFA+A*

    K短路模板,A*+SPFA求K短路.A*中h的求法为在反图中做SPFA,求出到T点的最短路,极为估价函数h(这里不再是估价,而是准确值),然后跑A*,从S点开始(此时为最短路),然后把与S点能达到的点 ...

  2. poj1511/zoj2008 Invitation Cards(最短路模板题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Invitation Cards Time Limit: 5 Seconds    ...

  3. k短路模板 POJ2449

    采用A*算法的k短路模板 #include <iostream> #include <cstdio> #include <cstring> #include < ...

  4. HDU 5521.Meeting 最短路模板题

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  5. ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven(第k短路模板)

    求第k短路模板 先逆向求每个点到终点的距离,再用dij算法,不会超时(虽然还没搞明白为啥... #include<iostream> #include<cstdio> #inc ...

  6. [poj2449]Remmarguts' Date(K短路模板题,A*算法)

    解题关键:k短路模板题,A*算法解决. #include<cstdio> #include<cstring> #include<algorithm> #includ ...

  7. 51nod_1445 变色DNA 最短路模板 奇妙思维

    这是一道最短路模板题,但是在理解题意和提出模型的阶段比较考验思维,很容易想到并且深深进入暴力拆解题目的无底洞当中. 题意是说:给出一个邻接矩阵,在每个点时,走且仅走向,合法路径中编号最小的点.问题是是 ...

  8. [hdu2544]最短路spfa

    解题关键:最短路模板一直没整理过,这里整理了一下spfa+链式前向星建图的最短路模板,以后网络赛省的打了. spfa算法的关键就是松弛操作,只有进行松弛操作,其后的点距离才可能被更新. #includ ...

  9. poj 2499第K短路模板

    第k*短路模板(单项边) #include <iostream> #include <cstdio> #include <algorithm> #include & ...

随机推荐

  1. ios 抓包工具 ios青花瓷charles

    iOS_青花瓷Charles抓包,ios青花瓷charles 使用青花瓷Charles抓取手机端的网络请求: 第一步,下载安装并打开Charles 第二步,去掉菜单[Proxy]以下的[Mac OSX ...

  2. swift中代理的使用

    1.首先定义一份协议. protocol HttpToolProrocol{ //1.代理方法,将server返回的字典传递给调用者 func didRecieveResults(result:NSD ...

  3. 【问题记录】springmvc国际化问题

    异常-Cannot change HTTP accept header - use a different locale resolution strategy springmvc国际化时,local ...

  4. iOS引用当前显示的UIAlertView

    UIAlertView在iOS里和一般的UIView不一样,有时候使用起来会有一些不便.特别要引用当前显示的UIAlertView的时候,就存在一些难度. 在iOS7以前,可以下面的代码可以解决这个问 ...

  5. 解决Apache长时间占用内存大的问题,Apache 内存优化方法

    问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache.exe占用内存几百兆不减少?答:用记事本打开apache2\conf\httpd.conf,我在centos5上装了kloxo, ...

  6. 【demo练习二】:WPF依赖属性的练习

    2016-10-11 依赖属性demo小样: 要求:在窗口中点击按钮,利用设置“依赖属性”把Label和TextBox控件里的属性值进行改变. ============================ ...

  7. iOS 线程管理的学习记录

    本文转载至 http://www.2cto.com/kf/201312/265451.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  8. GitHub从无到有

    一步一步教你如何在GitHub上上传自己的项目 2018年07月04日 09:23:40 夏雨薇安 阅读数:22764   首先你得注册一个自己的GitHub账号,注册网址:https://githu ...

  9. MySql 查询列中包含数据库的关键字

    MySQL查询列表中包含数据的关键字的处理办法是用``把关键字包起来(tab键上面的字符)

  10. 九度OJ 1341:艾薇儿的演唱会 (最短路)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:528 解决:241 题目描述: 艾薇儿今天来到了中国,她计划两天后在哈尔滨举行一场个人的演唱会.由于出现了紧急情况,演唱会的举办方要求艾薇儿 ...