hdu-oj 1874 畅通工程续
最短路基础
这个题目hdu-oj 1874可以用来练习最短路的一些算法。
Dijkstra 无优化版本
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define mt memset
using namespace std;
const int maxn = 210;
const int inf = 1<<30;
int N,M;
int mp[maxn][maxn];
int cost[maxn];
bool vis[maxn];
void dijkstra(int s, int t) {
mt(vis, 0, sizeof(vis));
for(int i = 0; i < N; i++){
cost[i] = (i == s? 0 :mp[s][i]);
}
vis[s] = true;
for(int i = 1; i < N; i++) {
int _min = inf, p = -1;
for(int j = 0; j < N; j++) {
if(!vis[j] && _min > cost[j]) {
_min = cost[j];
p = j;
}
}
if(p == -1 || _min == inf) continue;//这是重点
vis[p] = true;
for(int j = 0; j < N; j++) {
if(!vis[j] && cost[j] > cost[p]+mp[p][j]) {
cost[j] = cost[p]+mp[p][j];
}
}
}
}
int main() {
while(~scanf("%d%d", &N, &M)) {
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
mp[i][j] = inf;
}
}
for(int i = 0; i < M; i++) {
int a, b, x;
scanf("%d%d%d", &a, &b, &x);
mp[a][b] = mp[b][a] = min(mp[a][b], x);
}
int s,t;
scanf("%d%d", &s, &t);
dijkstra(s,t);
printf("%d\n", cost[t] == inf? -1: cost[t]);
}
return 0;
}
未优化版的Dijkstra算法时间复杂度为O(n^2)
未完待续...
hdu-oj 1874 畅通工程续的更多相关文章
- ACM: HDU 1874 畅通工程续-Dijkstra算法
HDU 1874 畅通工程续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Desc ...
- hdu 1874 畅通工程续
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过 ...
- HDU 1874畅通工程续(迪杰斯特拉算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Time Limit: 3000/1000 MS (Java/Others) ...
- HDU 1874 畅通工程续-- Dijkstra算法详解 单源点最短路问题
参考 此题Dijkstra算法,一次AC.这个算法时间复杂度O(n2)附上该算法的演示图(来自维基百科): 附上: 迪科斯彻算法分解(优酷) problem link -> HDU 1874 ...
- hdu 1874 畅通工程续 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 题目分析:输入起点和终点,顶点的个数,已连通的边. 输出起点到终点的最短路径,若不存在,输出-1 ...
- HDU 1874 畅通工程续【Floyd算法实现】
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 /************************************************* ...
- HDU 1874 畅通工程续(最短路/spfa Dijkstra 邻接矩阵+邻接表)
题目链接: 传送门 畅通工程续 Time Limit: 1000MS Memory Limit: 65536K Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路. ...
- hdu 1874 畅通工程续(迪杰斯特拉优先队列,floyd,spfa)
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU——1874畅通工程续(Dijkstra与SPFA)
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
随机推荐
- Qt之日志输出窗口
来源:http://blog.sina.com.cn/s/blog_a6fb6cc90101guz0.html 继上节所讲,Qt可以很容易的将一些日志信息保存到文件中,那么日志信息如何输出到窗口呢? ...
- java问题诊断
http://techblog.youdao.com/?p=961 http://linuxtools-rst.readthedocs.org/zh_CN/latest/advance/03_opti ...
- Oracle自增长序列
create table user_info ( id number(6) primary key, username varchar2(30) not null, password varchar2 ...
- sql-删除delete涉及到三个表,这个时候就要使用from,比如这样
delete y from dbo.XZXK_BANJIE b ,YJDC_YELLOWRED_CONTENT y , dbo.XZXK_SHOULI s where b.shoulioid=s.sh ...
- TabControl选项卡
<Grid> <TabControl Name="tabControl1"> <TabItem Name="tabItem1"&g ...
- OpenGL ES一些函数详解(一)
glLoadIdentity和glMultMatrix glLoadIdentity的作用是将当前模型视图矩阵转换为单位矩阵(行数和列数相同的矩阵,并且矩阵的左上角至右下角的连线上的元素都为1,其 ...
- HDU 5455 Fang Fang 水题,但题意描述有问题
题目大意:f[1]=f,f[2]=ff,f[3]=ffc,以后f[n]每增加1,字符串增加一个c.给出一个字符串,求最少有多少个f[]组成.(字符串首尾相连,比如:ffcf可看做cfff) 题目思路: ...
- phpStudy环境配置多个站点,绑定域名
经常做网站的朋友,往往要在自已的电脑同时建立多个站点,而phpstudy这款软件就能很好的解决这个问题,大家看下图 点击上图中的 其它选项菜单 ,就会弹出下面的对话框,然后点击 站点域名管理 然 后在 ...
- php取随机数 explode劫取字符串 时间定义随机数
php取随机数 <?phpfunction randomkeys($length){ $pattern='1234567890'; for($i=0;$i<$length;$i++) { ...
- druid-1.0.13 数据库配置文件密码加密
1.cmd 切换到druid目录 我的是C:\tool\apache-tomcat-7.0.67\webapps\projectA\WEB-INF\lib 2.运行命令 java -cp druid ...