嗯 有广搜的意思  

#include<cstdio>
#include<iostream>
#include<queue>
#include<vector>
#define maxn 1001
#define inf 9999999
using namespace std;
struct
vec //这里用邻接矩阵的方式比较浪费空间 所以用邻接表 这里是带权图 所以用结构体构图
{

int
point,cost;
friend
bool operator<(vec a,vec b)
{

return
a.cost>b.cost;
}
};

int
t,s,d,sta[maxn],en[maxn],dis[maxn];
vector<vec> fuck[maxn];
void
init()
{

fill(dis,dis+maxn+,inf);
for
(int i=;i<=maxn;i++) fuck[i].clear();
}

void
dij(int ss)
{

priority_queue<vec> q;
dis[ss]=;
vec temp;
temp.point=ss;
temp.cost=;
q.push(temp);
while
(!q.empty())//广度更新 每次取出离起点最近的点
{
temp=q.top();
q.pop();
int
v=temp.point;
if
(dis[v]<temp.cost) continue;
for
(int i=;i<fuck[v].size();i++)//更新顶点周围点的距离
{
vec ret=fuck[v][i];
if
(dis[ret.point]>dis[v]+ret.cost)//如果临近的点的距离可以更新
{
dis[ret.point]=dis[v]+ret.cost;
ret.cost=dis[ret.point];
q.push(ret);
}
}
}
}

int
main()
{

while
(cin>>t>>s>>d)
{

init();
// cout<<t<<s<<d<<endl;
while(t--)
{

int
a,b,c;
cin>>a>>b>>c;
vec temp;
temp.cost=c;
temp.point=b;
fuck[a].push_back(temp);
temp.point=a;
fuck[b].push_back(temp);
}

for
(int i=;i<=s;i++) cin>>sta[i];
for
(int i=;i<=d;i++) cin>>en[i];
int
mins=;
for
(int i=;i<=s;i++)
{

dij(sta[i]);
mins=inf;
for
(int j=;j<=d;j++) mins=min(mins,dis[en[j]]);
}

cout<<mins<<endl;
}

return
;
}

hdu 2066 Dijstra 堆优化的更多相关文章

  1. 【Dijstra堆优化】HDU 3986 Harry Potter and the Final Battle

    http://acm.hdu.edu.cn/showproblem.php?pid=3986 [题意] 给定一个有重边的无向图,T=20,n<=1000,m<=5000 删去一条边,使得1 ...

  2. HDU-6290_奢侈的旅行(Dijstra+堆优化)

    奢侈的旅行 Time Limit: 14000/7000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Problem De ...

  3. 复习最短路 spfa+dijstra堆优化

    题目很简单,, 但是wa了三次,, 用<vector>之前一定要记得clear()...简单说下 spfa的问题 和bell_forman有点类似 每次取出一个点 然后更新 并把更新了的节 ...

  4. 最短路-朴素版Dijkstra算法&堆优化版的Dijkstra

    朴素版Dijkstra 目标 找到从一个点到其他点的最短距离 思路 ①初始化距离dist数组,将起点dist距离设为0,其他点的距离设为无穷(就是很大的值) ②for循环遍历n次,每层循环里找出不在S ...

  5. 堆优化dijstra

    因为spfa没事就被卡一卡,所以堆优化dijstra就显得很重要,在最短路或者其模型里边,最少有一条边是没有被更新过的,也就是它是最短的,同理从这个点开始也有一条边最短,所以每次就找最短的然后松弛操作 ...

  6. hdu 2544 单源最短路问题 dijkstra+堆优化模板

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. HDU 6081 度度熊的王国战略(全局最小割堆优化)

    Problem Description度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族.哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士.所以这一场战争,将会十分艰难.为了更好的进攻 ...

  8. hdu3790 dijkstra+堆优化

    题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=3790 分析:dijkstra没有优化的话,复杂度是n*n,优化后的复杂度是m*logm,n是顶点数,m ...

  9. Dijkstra和堆优化

    Dijkstra算法 由于我之前一直记的迪杰斯特拉的翻译导致我把dijkstra写成了dijstra--所以下文#define dijstra dijkstra 我以后叫她迪杰克斯歘! Dijskra ...

随机推荐

  1. certbot 配置https屏蔽询问选项

    平常直接在终端,刷https时,要sudo certbot --nginx这样执行,但是中间会出现选项,让选择. 写程序用脚本操作时,希望跳过这些选项,就用--agree-tos 参数,一步到位. s ...

  2. 学习ArrayList的扩容机制

    基于jdk8 1.首先我们看new ArrayList中 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDA ...

  3. ARP Poisoning Attack and Mitigation Techniques ARP欺骗 中间人攻击 Man-In-The-Middle (MITM) attack 嗅探 防范 Can one MAC address have two different IP addresses within the network?

    小结: 1. ARP缓存投毒,窃听中毒者之间的通信: 2. ARP Poisoning Attack and Mitigation Techniques - Ciscohttps://www.cisc ...

  4. kotlin中值范围

    值范围表达式用rangeTo函数,该函数的操作符形式是二个点(..)另外还有in 和!in 相关操作符,任何可比较的大小的数据类型都可以定义值范围 值范围应用 fun main(arg: Array& ...

  5. c++拷贝文件-传统处理异常(学习)

    #include <iostream>#include <stdio.h> using namespace std; int my_copy(const char* src_f ...

  6. ios 自动去重

      //resultArrM 数据原//_indexArray 过滤后的数据//MYSelectAreaModel 模型 /* 重定义索引 */ - (void)sy_indexArray{ /* 索 ...

  7. 【转】【很全很新】C3P0 连接池和 DBUtils 配合事务使用总结

    [转]https://blog.csdn.net/guozhaohui628/article/details/84793028 很久没用原生连接池,最近想写个小功能,结果发现很多地方不太懂,然后网上搜 ...

  8. JAVA 基础编程练习题32 【程序 32 左移右移】

    32 [程序 32 左移右移] 题目:取一个整数 a 从右端开始的 4-7 位. 程序分析:可以这样考虑: (1)先使 a 右移 4 位. (2)设置一个低 4 位全为 1,其余全为 0 的数.可用~ ...

  9. Matplotlib数据可视化基础

    import numpy as np import matplotlib.pyplot as plt ## %matplotlib inline表示在行中显示图片,在命令行运行报错 data = np ...

  10. C4model实践总结

    能看到这篇文章的人,我就不用废话给你介绍C4model.vscode.plantuml这些是什么以及怎么安装了. 0. 基本语法. 1. 创建常用模板.并保存到snippet. 2.利用关系REL控制 ...