LibreOJ #119. 最短路
二次联通门 : LibreOJ #119. 最短路
/*
LibreOJ #119. 最短路 堆优化的Dijkstra */
#include <cstring>
#include <cstdio>
#include <queue> #define Max 6000 void read (int &now)
{
now = ;
register char word = getchar ();
while (word < '' || word > '')
word = getchar ();
while (word >= '' && word <= '')
{
now = now * + word - '';
word = getchar ();
}
} struct Data
{
int Id;
int dis; bool operator < (const Data &now) const
{
return this->dis > now.dis;
} Data (int __Id, int __dis) : Id (__Id), dis (__dis) {}; Data () {};
}; class Dijkstra_Type
{ private : int __to[Max << ], __next[Max << ];
int __dis[Max << ]; int Edge_Count;
int edge_list[Max];
bool visit[Max]; int dis[Max]; public : void Insert_edge (int from, int to, int dis)
{
Edge_Count ++; __to[Edge_Count] = to;
__next[Edge_Count] = edge_list[from];
edge_list[from] = Edge_Count; Edge_Count ++; __to[Edge_Count] = from;
__next[Edge_Count] = edge_list[to];
edge_list[to] = Edge_Count; __dis[Edge_Count] = __dis[Edge_Count - ] = dis;
} int Dijkstra (int Start, int End)
{
std :: priority_queue <Data> Queue; memset (dis, 0x3f, sizeof dis); Data now ; for (Queue.push (Data (Start, )), dis[Start] = ; !Queue.empty (); Queue.pop ())
{
now = Queue.top (); if (visit[now.Id])
continue; visit[now.Id] = true; for (int i = edge_list[now.Id]; i; i = __next[i]) if (dis[__to[i]] > dis[now.Id] + __dis[i])
{
dis[__to[i]] = dis[now.Id] + __dis[i];
Queue.push (Data (__to[i], dis[__to[i]]));
}
}
return dis[End];
}
}; Dijkstra_Type Make; int main (int argc, char *argv[])
{
int N, M;
int x, y, z; int S, T;
for (read (N), read (M), read (S), read (T); M --; )
{
read (x);
read (y);
read (z); Make.Insert_edge (x, y, z);
} printf ("%d", Make.Dijkstra (S, T)); return ;
}
LibreOJ #119. 最短路的更多相关文章
- LibreOJ #119. 最短路 (堆优化dijkstra)
题目描述 给一个 n(1≤2500≤n) n(1 \leq 2500 \leq n)n(1≤2500≤n) 个点 m(1≤6200≤m) m(1 \leq 6200 \leq m)m(1≤6200≤m ...
- 【LibreOJ】#6354. 「CodePlus 2018 4 月赛」最短路 异或优化建图+Dijkstra
[题目]#6354. 「CodePlus 2018 4 月赛」最短路 [题意]给定n个点,m条带权有向边,任意两个点i和j还可以花费(i xor j)*C到达(C是给定的常数),求A到B的最短距离.\ ...
- LibreOJ 题解汇总
目录 #1. A + B Problem #2. Hello, World! #3. Copycat #4. Quine #7. Input Test #100. 矩阵乘法 #101. 最大流 #10 ...
- HDU-6386-最短路
Age of Moyu Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Tot ...
- [日常摸鱼]UVA393 The Doors 简单计算几何+最短路
The Boy Next Doors 题意:给定一个固定大小的房间($x,y$的范围都是$[0,10]$),有$n$个墙壁作为障碍(都与横坐标轴垂直),每个墙壁都有两扇门分别用四个点来描述,起点 ...
- L3-007 天梯地图 (30分) 最短路+dp
最短路+dp思路:nuoyanli 520 Let's play computer game 输入样例1: 10 15 0 1 0 1 1 8 0 0 1 1 4 8 1 1 1 5 4 0 2 3 ...
- P3376 【模板】网络最大流——————Q - Marriage Match IV(最短路&最大流)
第一道题是模板题,下面主要是两种模板,但都用的是Dinic算法(第二个题也是) 第一题: 题意就不需要讲了,直接上代码: vector代码: 1 //invalid types 'int[int]' ...
- bfs输出路径 && 最短路(迪杰斯特拉)输出路径
问题描述 解决方法 1.像第一个问题那就是最短路问题(我代码采用迪杰斯特拉算法)实现 2.换乘次数最少,那就用bfs广搜来寻找答案.但是我的代码不能保证这个最少换乘是最短路程 代码 1 #includ ...
- 2019HDU多校第一场 6582 Path 【最短路+最大流最小割】
一.题目 Path 二.分析 首先肯定要求最短路,然后如何确定所有的最短路其实有多种方法. 1 根据最短路,那么最短路上的边肯定是可以满足$dist[from] + e.cost = dist[to] ...
随机推荐
- 数据库设计_ERMaster安装使用_PowerDesigner数据设计工具
数据库设计 1. 说在前面 项目开发的流程包括哪些环节 需求调研[需求调研报告]-- 公司决策层 (1) 根据市场公司需求分析公司是否需要开发软件来辅助日常工作 (2) 公司高层市场考察,市场分析,决 ...
- 基于【 centos7】四 || FastDFS集群+Nginx负载均衡
1. 架构设计 1.1 架构图 FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用F ...
- Array + two points leetcode.15-3Sum
题面 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Fi ...
- CentOS7安装Oracle11g数据库
1.关闭防火墙systemctl stop firewalled servicesystemctl disable firewalled service 2.关闭selinuxvim /etc/sel ...
- docker alpine wkhtmltopdf
截止2019.08 wkhtmltopdf 还没有 alpine 的版本 如需使用 需要在 alpine 环境中编译 生成 wkhtmltopdf (使用 apk add wkhtmltopdf ...
- Linux学习笔记(十一)shell基础:管道符、通配符和其他特殊符号
一.多命令顺序执行 && || 相当于其他高级语言中的 ? : 二.管道符 [命令1] | [命令2] 命令1的正确输出作为命令2的操作对象 分屏显示结果 netstat -an 命令 ...
- 10.Vue请求远端数据库
代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- (17)for循环
# 把容器里数据拿出来的这个过程 可以叫遍历 迭代 循环 listvar = [1, 2, 3, 4, 5] print(len(listvar)) # 算出列表里面所有元素的个数,len是计算长度 ...
- docker在Windows环境下的安装
Windows环境下安装 docker有两种安装包 一.Docker for Windows(目前只能在 64 位的 Windows10 专业版.企业版.教育版下才能安装) 二.Docker Tool ...
- 用js刷剑指offer(合并两个排序的链表)
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 牛客网链接 js代码 /*function ListNode(x){ this.val = x; ...