图论2023.11.12

二分图--匈牙利算法匹配

P2319 [HNOI2006] 超级英雄

P1894[USACO4.2] 完美的牛栏The Perfect Stall

P2071 座位安排

分层图

P4822 [BJWC2012] 冻结
P4568[JLOI2011] 飞行路线

P2939 [USACO09FEB] Revamping Trails G

最短路

P2149[SDOI2009] Elaxia的路线
 Elaxia 和 w** 的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们必须合理地安排两个人在一起的时间。
Elaxia 和 w** 每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提下,一起走的时间尽可能的长。
现在已知的是 Elaxia 和 w** 所在的宿舍和实验室的编号以及学校的地图:
地图上有n 个路口,m 条路,经过每条路都需要一定的时间
题意:求无向图中,两对点间最短路的最长公共路径的长度
 筛出最短路的边
思路:分别求出从s1,t1,s2,t2出发的最短路,筛出s1到t1的最短路的边
之后同样在这些边求出并行走,反向走的最长公共路径  

#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#include<vector>
#include<stack>
#define endl '\n'
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define ms(x,y) memset(x,y,sizeof x);
#define YES cout<<"YES"<<'\n';
#define NO  cout<<"NO"<<'\n';
#define fr(i,z,n) for(int i = z;i <= n; i++)
#define fer(i,x)   for(int i=e.head[x];i;i=e.next[i])
#define ufr(i,n,z) for(int i = n;i >= z; i--)
#define int long long 
typedef long long ll;
const ll N = 1e6 + 10, inf = 1e18;
const ll mod = 1e9 + 7;
using namespace std;
template<size_t size>
struct Road {int to[size], next[size], head[size], cnt = 1;ll w[size];void add(int x, int y, ll ww) {to[cnt] = y;w[cnt] = ww;next[cnt] = head[x];head[x] = cnt++;}void clear(int n) {for (int i = 0; i <= n; i++) {head[i] = 0;}cnt = 1;}
};
Road<N>e;
int dis[4][N];
bool vis[N];
int n, m;
int ok[N], in[N];
int f[N], g[N];                  //记录反向走和并行走两种情况
void spfa(int u,int k) {fr(i, 1, n) {dis[k][i] = 0x3f3f3f3f;vis[i] = 0;}vis[u] = 1;dis[k][u] = 0;queue<int>q;q.push(u);while (!q.empty()) {int x = q.front();q.pop();vis[x] = 0;fer(i, x) {int v = e.to[i];int w = e.w[i];if (dis[k][x] + w < dis[k][v]) {dis[k][v] = dis[k][x] + w;if (!vis[v]) {q.push(v);vis[v] = 1;}}}}
}
void solve() {cin >> n >> m;int s1, t1, s2, t2;cin >> s1 >> t1 >> s2 >> t2;    fr(i, 1, m) {int x, y,w;cin >> x >> y >> w;e.add(x, y, w);e.add(y, x, w);}spfa(s1, 0); spfa(t1, 1);          //最短路spfa(s2, 2); spfa(t2, 3);fr(u, 1, n) {                       //选出最短路中的有用边fer(i, u) {int w = e.w[i];int v = e.to[i];if ((dis[0][u] + w+dis[1][v])==dis[0][t1]) {    //s1到u的最短路+u到v的距离+v到t1的最短路==s1到t1的最短路ok[i] = 1;in[v]++;}}}int ans = 0;queue<int>q;q.push(s1);while (!q.empty()) {               //拓扑排序int u = q.front();q.pop();ans = max({ g[u], f[u],ans });fer(i, u) {if (ok[i]) {               //有用边int v = e.to[i];int w = e.w[i];in[v]--;if (in[v] == 0) {q.push(v);}if ((dis[2][u] + w + dis[3][v]) == dis[2][t2]) {     //筛出有用边//从s2到u的最短路+u到v的距离+v到t2的最短路=s2到t2的最短路//并行走g[v] = max(g[v], g[u] + w);}if((dis[3][u] + w + dis[2][v]) == dis[2][t2]) {//从t2到u的最短路+u到v的距离+v到s2的最短路=s2到t2的最短路//反向走f[v] = max(f[v], f[u] + w);}}}}cout << ans << '\n';
}signed main()
{ios;int t = 1;//cin >> t;while (t--) {solve();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/143901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

labview实现仪器的控制visa

*IDN? 是识别大多数仪器的查询指令。仪器会回应一个用于描述仪器的识别字符串。如果仪器不接受该指令&#xff0c;请在仪器手册中查询仪器能识别的指令列表。 如下图所示&#xff1a; 程序如下&#xff1a;

分类预测 | Matlab实现PSO-GRU粒子群算法优化门控循环单元的数据多输入分类预测

分类预测 | Matlab实现PSO-GRU粒子群算法优化门控循环单元的数据多输入分类预测 目录 分类预测 | Matlab实现PSO-GRU粒子群算法优化门控循环单元的数据多输入分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现PSO-GRU粒子群算法优化门控循环单元的数据…

正则匹配去除HTMl标签

正则匹配去除HTMl标签 案例&#xff1a;如在textarea中去除标签 操作方法 val.replace(/<[^>]>/g, ‘’))

【洛谷 P2440】木材加工 题解(二分查找+循环)

木材加工 题目背景 要保护环境 题目描述 木材厂有 n n n 根原木&#xff0c;现在想把这些木头切割成 k k k 段长度均为 l l l 的小段木头&#xff08;木头有可能有剩余&#xff09;。 当然&#xff0c;我们希望得到的小段木头越长越好&#xff0c;请求出 l l l 的最大…

openssl+ DES开发实例(Linux)

文章目录 一、DES介绍二、DES原理三、DES C实现源码 一、DES介绍 DES&#xff08;Data Encryption Standard&#xff09;是一种对称密钥加密算法&#xff0c;最初由 IBM 设计&#xff0c;于1977年成为美国国家标准&#xff0c;用于加密非机密但敏感的政府数据。DES 使用相同的…

Hexo Puller: Hexo博客同步的一次性解决方案

Hexo Puller 是一个简单的 git 仓库同步工具&#xff0c;可以仅需一次配置解决云服务器同步hexo博客的问题&#xff0c;而且保留了博客的markdown源文件。 相对于现有的方法&#xff0c;如 hexo-deployer-git 和 rsync&#xff0c;Hexo Puller 有以下优点: 只需要配置一次。可…

Flutter笔记:getX库中的GetView中间件

Flutter笔记 getX库中的GetView中间件 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/134301825 如果你…

第3章:搜索与图论【AcWing】

文章目录 图的概念图的概念图的分类有向图和无向图 连通性连通块重边和自环稠密图和稀疏图参考资料 图的存储方式邻接表代码 邻接矩阵 DFS全排列问题题目描述思路回溯标记剪枝代码时间复杂度 [N 皇后问题](https://www.luogu.com.cn/problem/P1219)题目描述全排列思路 O ( n ! …

聚观早报 |英伟达发布H200;夸克发布自研大模型

【聚观365】11月15日消息 英伟达发布H200 夸克发布自研大模型 iQOO 12系列开启销售 红魔9 Pro配置细节 禾赛科技第三季度营收4.5亿元 英伟达发布H200 全球市值最高的芯片制造商英伟达公司&#xff0c;正在升级其H100人工智能处理器&#xff0c;为这款产品增加更多功能&am…

操作符——C语言初阶

一.算数操作符&#xff1a; - * / % 、-、*、/这四个运算符均可用于整数及浮点数的运算。 当使用/运算符时&#xff0c;如果两个操作数均为整型&#xff0c;那么执行整数除法&#xff0c;运算结果也为整型&#xff1b;如果两个操作数至少一个为浮…

点云从入门到精通技术详解100篇-双传感器模式的非结构化环境检测与识别(续)

目录 3.3 KD-Tree算法点云特征提取 3.3.1 KD-Tree算法的基本原理 3.3.2边沿点提取 3.4道路边沿线拟合验证

macOS 13.6 及后续系统安装 Asahi Linux 将破坏引导

导读Asahi Linux 是一个致力于为 Apple Silicon 设备带来 Linux 支持的项目&#xff0c;日前有用户反馈称&#xff0c;若在相关设备上安装了 macOS 13.6-14&#xff0c;再安装 Asahi Linux &#xff0c;就会导致系统引导失败&#xff0c;出现“黑屏”情况。 目前 Asahi Linux 项…

并发线程特性-可见性和有序性

2 可见性 2.1 什么是可见性 可见性问题是基于CPU位置出现的&#xff0c;CPU处理速度非常快&#xff0c;相对CPU来说&#xff0c;去主内存获取数据这个事情太慢了&#xff0c;CPU就提供了 L1&#xff0c;L2&#xff0c;L3的三级缓存&#xff0c;每次去主内存拿完数据后&#x…

对产品实现汇率换算服务(将两个CompletableFuture对象整合起来,无论它们是否存在依赖)

需求 有一家商店提供的价格是以欧元&#xff08;EUR&#xff09;计价的&#xff0c;但是你希望以美元的方式提供给你的客户。你可以用异步的方式向商店查询指定商品的价格&#xff0c;同时从远程的汇率服务那里查到欧元和美元之间的汇率。当二者都结束时&#xff0c;再将这两个…

单片机实验(一)

前言 实验一&#xff1a;用单片机控制多只数码管(屏)分别左、右滚动显示自己完整的学号&#xff1b; 实验二&#xff1a;用单片机控制LED1616点阵交替正序、逆序显示自己的中文姓名。 参考链接&#xff1a; LED数码管的静态显示与动态显示&#xff08;KeilProteus&#xff0…

Android网络模块基本实现步骤

Android网络模块主要是用于访问网络和获取数据&#xff0c;下面是网络模块的基本实现步骤&#xff1a; 选择网络框架&#xff1a;Android中常用的网络框架有HttpURLConnection、OkHttp、Volley和Retrofit等。最新的版本已经支持使用Kotlin协程完成网络请求&#xff0c;可以根据…

关于对Java中volatile关键字的理解与简述

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/134430096 出自【进步*于辰的博客】 启发之作&#xff1a;Java volatile关键字最全总结&#xf…

RK3588平台开发系列讲解(项目篇)嵌入式AI的学习步骤

文章目录 一、嵌入式AI的学习步骤1.1、入门Linux1.2、入门AI 二、瑞芯微嵌入式AI2.1、瑞芯微的嵌入式AI关键词2.2、AI模型部署流程 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2; 本篇将给大家介绍什么是嵌入式AI。 一、嵌入…

C++二分查找算法:132 模式解法二枚举2

题目及解法一&#xff1a; https://blog.csdn.net/he_zhidan/article/details/134362273 分析 第一步&#xff0c;选择各3对应的1&#xff0c;如果有多个符合对应最小的1&#xff0c;记录num[0,j)中的最小值iMin&#xff0c;如果nums[j]大于iMin&#xff0c;则m3To1 [nums[j…

基于平衡优化器算法优化概率神经网络PNN的分类预测 - 附代码

基于平衡优化器算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于平衡优化器算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于平衡优化器优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…