热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

牛客国庆集训派对Day3I.Metropolis(Dijkstra变型)

题意:求一个N个点无向图中,其中p个关键点间的最短距离.分析:比较特殊的最短路,方式类似于多源BFS,将所有关键点装入优先队列,状态中需要包含其源点的id.对每条边都要遍历,对每个

题意:求一个N个点无向图中,其中p个关键点间的最短距离.
分析:比较特殊的最短路,方式类似于多源BFS,将所有关键点装入优先队列,状态中需要包含其源点的id.对每条边都要遍历,对每个节点,需要记录其确定最短的源头以及其最短距离.当一个访问状态到达了与自己源头状态不同的点,则说明两个关键点相遇,每次相遇时,更新两个源头的最短距离.

#include
using namespace std;
typedef long long LL;
const int MAXN = 2e5+5;
const LL INF &#61; (1LL)<<60;
struct Edge{int v,next;LL w;
}E[MAXN<<2];
int head[MAXN],tot;
int vis[MAXN];
LL d[MAXN],link[MAXN];
vector st;
int N,M,k;void init()
{st.clear();memset(head,-1,sizeof(head));tot &#61; 0;
}void AddEdge(int u,int v,int w){E[tot] &#61; (Edge){v,head[u],w};head[u] &#61; tot&#43;&#43;;
}struct HeapNode{int u,sta;LL val;bool operator <(const HeapNode & rhs) const{return val > rhs.val;}
};
void Dijkstra()
{for(int i&#61;0;i<&#61;N;&#43;&#43;i) d[i] &#61; INF, vis[i] &#61; 0;priority_queue Q;for(int i&#61;0,sz &#61; st.size();i}int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endifscanf("%d %d %d",&N, &M, &k);init();int u,v;LL w;while(k--){scanf("%d",&u);st.push_back(u);}while(M--){scanf("%d %d %lld",&u,&v,&w);AddEdge(u,v,w);AddEdge(v,u,w);}Dijkstra();for(int i&#61;0,sz &#61; st.size();i}

转:https://www.cnblogs.com/xiuwenli/p/9741575.html



推荐阅读
  • 求节点到根的距离的迭代程序原文:https://www.ge ... [详细]
  • Bzoj1185最小矩阵覆盖[旋转卡壳+凸包+处理[0]情况]
    题目链接题目大意:就是给你若干个点用一个最小的矩形把这些点覆盖掉就是给你若干个点用一个最小的矩形把这些点覆盖掉就是给你若干个点用一个最小的矩形把这些点覆盖掉解题思路& ... [详细]
  • 【剑指offer】11.二叉树的深度
    总目录:算法之旅导航目录 1.问题描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视 ... [详细]
  • 解题:洛谷2093 JZPFAR
    题面初见K-DTree其实这样的题(欧几里得距离第$x$近点对)不应该用K-DTree做,因为会被构造数据卡成$O(n^2)$,随机的另说。但是并没有找 ... [详细]
  • 题目链接Reference:https:www.cnblogs.comdiltheyp9757781.html首先容易想到的常规dp是,初始化dp(i,j)0dp(i,j)0dp( ... [详细]
  • 一文了解消息中间件RabbitMQ
    消息中间件---RabbitMQ1消息中间件的作用2.常用的消息中间件3消息中间件RabbitMQ3.1RabbitMQ介绍3.3RabbitMQ的队列模式3.3RabbitMQ的 ... [详细]
  • linux里的子系统:linux内核里把某种功能类型的源码划分成一个源码模块,也就是把一类相关的源文件集中起来封装出的功能模块.如内核源码目录下”driversinput”里就 ... [详细]
  • 基于bionic c分析线程的一生
    1.概述和问题进程和线程操作系统基础和重要的机制,从源码角度理解进程和线程的区别对于理解操作系统的基本原理非常有帮助,同时进程和线程的创建又是通过系统 ... [详细]
  • 题意:多模式串匹配,输出模式串的ID思路:典型AC自动机.用向量存储答案ID#include<cstdio>#include<cstring> ... [详细]
  • 拓扑排序算法描述代码算法描述拓扑排序就是对一个有向图进行排序,得到一个有序序列。找到有向图中入度为0的结点,加入到队列中,然后删除与该点 ... [详细]
  • 标准库Vector类型使用需要的头文件:#includeVector:Vector是一个类模板。不是一种数据类型。Vector ... [详细]
  • 这道贪心非常神仙大体想法肯定是选择一个价格较低的一天买入并在之后找一个价格较高的一天卖出直接贪心的选显然不可行,考虑如何实现“反悔”这里直接说做法,反正我也想不到从前向后扫描每一天 ... [详细]
  • 【Linux系统编程:基础IO 下】dup2 实现输出重定向、输入重定向、追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接
    写在前面这里先接着《基础IO上》中的缓冲区的内容作些补充,这里主要补充dup2接口。✔测试用例一:#include#inclu ... [详细]
  • 一文了解Python collections模块中的deque用法[python头条资讯]
    Python中文网有大量免费的Python入门教程,欢迎大家来学习。collections是Python内建的一个集合模块,deque是双边队列,具有队列和栈的性质,在list的基 ... [详细]
  • 在之前的文章中,我们已经讲过了很多种线程同步的方法,如互斥锁,信号量,读写锁等,今天我们再来学习一种线程同步的方法,条件变量。条件变量允许一个线程通知其他的线程它们所等待的某个条件 ... [详细]
author-avatar
mobiledu2502915673
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有