题目链接:http://ac.jobdu.com/problem.php?pid=1162

详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus

参考代码:

//
// 1162 I Wanna Go Home.cpp
// Jobdu
//
// Created by PengFei_Zheng on 20/04/2017.
// Copyright © 2017 PengFei_Zheng. All rights reserved.
// #include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <cmath>
#define MAX 0x7fffffff
using namespace std; int n ,m; int grah[][];
int sup[]; void dijkstra()
{
int dis[];
bool mark[] = {false}; for(int i = ; i < n; i++)
dis[i] = grah[][i]; int s = ;
mark[s] = true;
dis[s] = ;
int newP = s;
for(int i = ; i <= n ; i++){
for( int j = ; j < n ; j++){
if( !mark[j] && grah[newP][j] < MAX && !(sup[newP] == && sup[j] == )){
if(dis[j] > dis[newP] + grah[newP][j])
dis[j] = dis[newP] + grah[newP][j];
}
}
int min = MAX;
for(int j = ; j < n ; j++){
if( !mark[j] && min > dis[j]){
min = dis[j];
newP = j;
}
}
mark[newP] = true;
}
if(dis[] < MAX) printf("%d\n",dis[]);
else printf("-1\n");
} int main(){
while(scanf("%d",&n)!=EOF && n!=){ for(int i = ; i < n ; i++){
for(int j = ; j < n ; j++){
if(i==j) {
grah[i][j]=;
}
else grah[i][j]=MAX;
}
}
scanf("%d",&m);
int x, y, len;
while(m--){
scanf("%d%d%d",&x,&y,&len);
grah[x-][y-] = grah[y-][x-]=len;
}
for(int i = ; i < n ; i++){
scanf("%d",&sup[i]);
}
dijkstra();
}
return ;
} /**************************************************************
Problem: 1162
User: zpfbuaa
Language: C++
Result: Accepted
Time:10 ms
Memory:2932 kb
****************************************************************/

题目1162:I Wanna Go Home(最短路径问题进阶dijkstra算法))的更多相关文章

  1. 题目1100:最短路径(最短路径问题进阶dijkstra算法)

    题目链接:http://ac.jobdu.com/problem.php?pid=1100 详细链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  2. 最短路径问题的Dijkstra算法

      问题 最短路径问题的Dijkstra算法 是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出.迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法终于得到一个最短路径树>    ...

  3. 单源最短路径问题2 (Dijkstra算法)

    用邻接矩阵 /* 单源最短路径问题2 (Dijkstra算法) 样例: 5 7 0 1 3 0 3 7 1 2 4 1 3 2 2 3 5 2 4 6 3 4 4 输出: [0, 3, 7, 5, 9 ...

  4. 图论(四)------非负权有向图的单源最短路径问题,Dijkstra算法

    Dijkstra算法解决了有向图G=(V,E)上带权的单源最短路径问题,但要求所有边的权值非负. Dijkstra算法是贪婪算法的一个很好的例子.设置一顶点集合S,从源点s到集合中的顶点的最终最短路径 ...

  5. 单源最短路径—Bellman-Ford和Dijkstra算法

    Bellman-Ford算法:通过对边进行松弛操作来渐近地降低从源结点s到每个结点v的最短路径的估计值v.d,直到该估计值与实际的最短路径权重相同时为止.该算法主要是基于下面的定理: 设G=(V,E) ...

  6. C++编程练习(11)----“图的最短路径问题“(Dijkstra算法、Floyd算法)

    1.Dijkstra算法 求一个顶点到其它所有顶点的最短路径,是一种按路径长度递增的次序产生最短路径的算法. 算法思想: 按路径长度递增次序产生算法: 把顶点集合V分成两组: (1)S:已求出的顶点的 ...

  7. 单源最短路径问题之dijkstra算法

    欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 算法的原理 以源点开始,以源点相连的顶点作为向外延伸的顶点,在所有这些向外延伸的顶 ...

  8. 最短路径问题:Dijkstra算法

    定义 所谓最短路径问题是指:如果从图中某一顶点(源点)到达另一顶点(终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边的权值总和(称为路径长度)达到最小. 下面我们介绍两种比较常用的求最短路 ...

  9. 最短路径:初涉Dijkstra算法

    模板题目:https://www.luogu.com.cn/problem/P1339 我的代码: #include<cstdio> #include<cstring> #in ...

随机推荐

  1. Java SE 8 并发增强

    1.原子值 java5开始,提供了一些原子操作的类,如AtomicInteger.AtomicLong等 这些类提供了诸如incrementAndGet这样的原子操作方法. 单数如果想进行复杂操作,则 ...

  2. iOS:TabBarController 显示/隐藏第一级页面的TabBar

    - (void)setTabBarHidden:(BOOL)hidden { UIView *tab = self.tabBarController.view; ) { return; } UIVie ...

  3. 【WP8】图片缓存控件

    在做图片相关的应用的时候,经常需要用大图片的缓存,默认的Image控件不支持缓存的支持,本文自定义一个支持图片缓存的控件 当图片的地址是网络图片时候 根据Url判断该图片是否存在本地,如果存在,则直接 ...

  4. Android Material Design控件学习(二)——NavigationView的学习和使用

    前言 上次我们学习了TabLayout的用法,今天我们继续学习MaterialDesign(简称MD)控件--NavigationView. 正如其名,NavigationView,导航View.一般 ...

  5. iOS中js与objective-c的交互(转)

    因为在iOS中没有WebKit.Framework这个库的,所以也就没有 windowScriptObject对象方法了.要是有这个的方法的话 就方便多了,(ps:MacOS中有貌似) 现在我们利用其 ...

  6. SpringBoot------注解把配置文件自动映射到属性和实体类

    1.映射到属性 package top.ytheng.demo.controller; import org.springframework.beans.factory.annotation.Valu ...

  7. Java适配器模式的简单应用

    对于刚从工厂生产出来的商品,有些功能并不能完全满足用户的需要.因此,用户通常会对其进行一定的改装工作.编写程序为普通的汽车增加GPS定位功能,借此演示适配器模式的用法. 思路分析: 这个问题的需求是, ...

  8. js中对象的深度复制

    // 对象的深度复制 cloneObj(oldObj) var cloneObj = function (obj) { var newObj = {}; if (obj instanceof Arra ...

  9. ios开发之--awakeFromNib和initWithFrame分别什么时候调用

    - (void)awakeFromNib { //代码 } 这个方法只有是通过storyborad或者xib方式创建的cell时才会自动调用 - (instancetype)initWithFrame ...

  10. UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\u200e’ in position 43: illegal multib

    [问题] 在执行代码时,提示上述错误,源码如下: # 下载小说... def download_stoy(crawl_list,header): # 创建文件流,将各个章节读入内存 with open ...