嗯 有广搜的意思  

#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. 访问redis集群提示连接超时的问题

    上周在服务器通过docker部署了一个单机版redis集群,今天通过StackExchange.Redis访问的时候报了这个错: 提示我把超时时间设置一下,我去服务器上找到redis的配置文件,发现不 ...

  2. 解决Maven的jar包冲突问题

    1. 问题描述 控制台说:无法将 com.zpx.servlet.MyServlet 识别为 javax.servlet.Servlet 2. 问题原因 Maven的一个核心功能就是一键构建,所以Ma ...

  3. ntp时间同步服务器的搭建

    CentOS系统一般自带安装有ntp服务,仅需做相关配置即可. 一.配置ntp服务器: 在选定的ntp服务器上vim /etc/ntp.conf 添加一行:restrict default nomod ...

  4. windows 10中的ubuntu子系统安装桌面环境的方法

    windows 10中的ubuntu子系统安装桌面环境的方法 (How to install Ubuntu-desktop in windows 10 Subsystem for Linux) 转载 ...

  5. linux - mysql:查看 mysql 是否安装成功

    命令 rpm -q mysql 结果 成功: 失败:

  6. mysql多实例搭建

    一)多实例安装 [root@mysqlmaster01 ~]# mkdir /data/mysql_data2[root@mysqlmaster01 ~]# mkdir /data/mysql_dat ...

  7. ES6深入浅出-1 新版变量声明:let 和 const-2.视频 let和const

    以前的var方式声明不好用 a=1回声明一个全局变量, 输出了1 说明a=1确实声明了一个全局变量. 但是你把放在其他的地方,就不是声明全局变量了. 如果外面有个全局变量a 那么函数里面就是给a赋值 ...

  8. 解决 Windows启动时要求验证

    KB971033 微软检测盗版jar SLMGR -REARM 出现Window启动时要求验证版本, 在cmd窗口输入命令重新配置 重新启动即可 出现错误:解决办法 开始→设置,打开控制面板的“添加和 ...

  9. mysql一条语句实现插入或更新的操作

    ,),(,) ON DUPLICATE KEY UPDATE c=VALUES(c); 或者 INSERT INTO table (id,a,b,c) select id,a,b,c from xxx ...

  10. ubuntu kylin 18.04 安装 Qt Creator 5.11

    首先,去官网(https://download.qt.io/official_releases/qt/ )下载Qt Creator的安装包. 我下载的是5.11.1版本文件:qt-opensource ...