YbtOJ 「图论」第3章 最短路径
例题1.单源最短路径
dij 板子。(w36557658 原版 dij 代码!
code
#include<cmath>
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<int,int>pii;
const int N=100005;
const int M=500005;
const int INF=2147483647;
inline int read(){
int X=0,w=0;char ch=0;
while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
return w?-X:X;
}
struct node{
int w,to,nxt;
}e[M];
int n,m,k,p,cnt,head[N],dis[N];
bool vis[N];
inline void add(int u,int v,int w){
e[++cnt].to=v;e[cnt].w=w;e[cnt].nxt=head[u];head[u]=cnt;
}
priority_queue<pii,vector<pii>,greater<pii> >q;
void dij(int s){
dis[s]=0;q.push(pii(0,s));
while(!q.empty()){
int u=q.top().se,f=q.top().fi;q.pop();
if(f!=dis[u])continue;
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to,w=e[i].w;
if(dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
q.push(pii(dis[v],v));
}
}
}
return;
}
int main(){
int n=read(),m=read(),s=read();
for(int i=1;i<=n;i++)dis[i]=INF;
for(int i=1;i<=m;i++){
int u=read(),v=read(),w=read();
add(u,v,w);
}
dij(s);
for(int i=1;i<=n;i++)printf("%d ",dis[i]);
return 0;
}
例题2.负环判断
板子。坑人,交了一面才发现 std 没清空队列导致数据锅了。
写的时候记得不要清空队列(bushi
code
#include<bits/stdc++.h>
using namespace std;
const int N=6e4+5;
int T,n,m;
int head[N],cnt;
struct node{
int nxt,to,w;
}e[N];
void add(int u,int v,int w){
e[++cnt]={head[u],v,w};head[u]=cnt;
}
int dis[N],in[N],vis[N];
queue<int> q;
bool spfa(int s)
{
memset(dis,0x3f3f3f3f,sizeof(dis));
memset(in,0,sizeof(in));
memset(vis,0,sizeof(vis));
q.push(s);in[s]=1;dis[s]=0;
while(!q.empty())
{
int u=q.front();q.pop();in[u]=0;
//cout<<u<<endl;
for(int i=head[u];i;i=e[i].nxt)
{
int v=e[i].to;
if(dis[u]+e[i].w<dis[v])
{
dis[v]=dis[u]+e[i].w;
vis[v]=vis[u]+1;
if(vis[v]>=n) return 0;
if(!in[v])
{
in[v]=1;
q.push(v);
}
}
}
}
return 1;
}
int main()
{
scanf("%d",&T);
while(T--)
{
memset(e,0,sizeof(e));
memset(head,0,sizeof(head));cnt=0;
scanf("%d%d",&n,&m);
for(int i=1,u,v,w;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
if(w>=0) add(u,v,w),add(v,u,w);
else add(u,v,w);
}
if(!spfa(1)) cout<<"YE5"<<endl;
else cout<<"N0"<<endl;
}
return 0;
}
YbtOJ 「图论」第3章 最短路径的更多相关文章
- 零元学Expression Blend 4 - Chapter 17 用实例了解互动控制项「CheckBox」I
原文:零元学Expression Blend 4 - Chapter 17 用实例了解互动控制项「CheckBox」I 本章将教大家如何运用CheckBox做实作上的变化:教你如何把CheckBox变 ...
- 零元学Expression Blend 4 - Chapter 16 用实例了解互动控制项「Button」II
原文:零元学Expression Blend 4 - Chapter 16 用实例了解互动控制项「Button」II 本章将教大家如何制作自己的Button,并以玻璃质感Button为实作案例. ? ...
- 零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II
原文:零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II 本章将延续上一章的范例,步骤解析. 本章将延续上一章的范例,步骤解析 ...
- 零元学Expression Blend 4 - Chapter 15 用实例了解互动控制项「Button」I
原文:零元学Expression Blend 4 - Chapter 15 用实例了解互动控制项「Button」I 本章将教大家如何更改Button的预设Template,以及如何在Button内设置 ...
- 「2014-3-18」multi-pattern string match using aho-corasick
我是擅(倾)长(向)把一篇文章写成杂文的.毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位:风格偏杂文一点,也是没人拒稿的.这么说来,arxiv 就好比是 paper 世界的博 ...
- Facebook 发布「流程」
时不时就会在面试过程中碰到有候选人问 Facebook 是否采用 Scrum 之类的敏捷方法,偶尔也会有中国的朋友问及 Facebook 上线流程.我通常会简单说几句,然后说「如果你真感兴趣的话,去搜 ...
- LoibreOJ 2042. 「CQOI2016」不同的最小割 最小割树 Gomory-Hu tree
2042. 「CQOI2016」不同的最小割 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- Android逆向之旅---静态方式分析破解视频编辑应用「Vue」水印问题
一.故事背景 现在很多人都喜欢玩文艺,特别是我身边的UI们,拍照一分钟修图半小时.就是为了能够在朋友圈显得逼格高,不过的确是挺好看的,修图的软件太多了就不多说了,而且一般都没有水印啥的.相比较短视频有 ...
- LOJ2722 「NOI2018」情报中心
「NOI2018」情报中心 题目描述 C 国和D 国近年来战火纷飞. 最近,C 国成功地渗透进入了D 国的一个城市.这个城市可以抽象成一张有$n$ 个节点,节点之间由$n - 1$ 条双向的边连接的无 ...
- 零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术
原文:零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术 本章所介绍的是便利且快速的内建工具Clone ? 本章所介绍的是便利且 ...
随机推荐
- Go 并发模型—Goroutines
前言 Goroutines 是 Go 语言主要的并发原语.它看起来非常像线程,但是相比于线程它的创建和管理成本很低.Go 在运行时将 goroutine 有效地调度到真实的线程上,以避免浪费资源,因此 ...
- Windows下打开指定目录并定位到具体文件
一.在Windows上,网上流传的几种方法可以打开目录并定位到指定文件: 1.使用系统调用: 使用system()函数执行操作系统的命令行命令. 在命令行命令中,使用explorer /select, ...
- 如何用Three.js + Blender打造一个web 3D展览馆
作者:vivo 互联网前端团队- Wei Xing 运营活动新玩法层出不穷,web 3D炙手可热,本文将一步步带大家了解如何利用Three.js和Blender来打造一个沉浸式web 3D展览馆. 一 ...
- Hexo博客yilia主题首页添加helper-live2d模型插件
插件效果 插件的github地址 插件作者提供了较为详细的安装步骤,我结合自己操作和图示,提供大家. 效果展示:红框内为2d模型,可以随鼠标移动而变化 安装模块: hexo博客根目录选择cmd命令窗口 ...
- 解决php中通过exec调用python脚本报ModuleNotFoundError错误
背景 出于某些原因,我们有时会在PHP中通过exec来调用Python代码,有可能是某些功能只能用Python实现(或用Python实现比较方便),有可能是出于性能考虑(Python可以执行耗时任务) ...
- 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架
基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架 Avalonia简介: Avalonia是.NET的一个跨平台UI框架,提供了一个灵活的样式系统,支持广泛的操作 ...
- 用极限网关实现 ES 容灾,简单!
身为 IT 人士,大伙身边的各种系统肯定不少吧.系统虽多,但最最最重要的那套.那几套,大伙肯定是捧在手心,关怀备至.如此重要的系统,万一发生故障了且短期无法恢复,该如何保障业务持续运行? 有过这方面思 ...
- Redis和Mysql保持数据一致性
1.简述 在高并发的场景下,大量的请求直接访问Mysql很容易造成性能问题.所以,我们都会用Redis来做数据的缓存,削减对数据库的请求.但是,Mysql和Redis是两种不同的数据库,如何保证不 ...
- deepin install mariadb
输入指令: sudo apt-get install mariadb-server mariadb-client
- 基于AIidlux平台的自动驾驶环境感知与智能预警
自动驾驶汽车又称为无人驾驶车,是一种需要驾驶员辅助或者完全不需操控的车辆. 自动驾驶分级: 自动驾驶系统的组成部分: 环境感知系统: 自动驾驶系统架构: 自动驾驶数据集: Aidlux的作用: YOL ...