当前位置: 首页 > news >正文

G - Road Blocked 2

G - Road Blocked 2

思路

只有当一条边是从 1 1 1 n n n的所有最短路构成的图的桥时,去掉这条边,最短路才会变大

所以就可以用最短路加tarjan解决这道题了

怎么判断一条边是否可以构成最短路呢,比如求 1 1 1 n n n的最短路,分别求出dist1(源点为1)和distn(源点为n),当一条边(端点分别为a,b,边长为w)包含再最短路之中时,它满足如下条件

    dist1[n]=dist1[a]+w+distn[b]||dist1[n]=distn[a]+w+dist1[b]

当然还有其它方法,我写的代码就是其他方法,只是上面的方法更简单罢了

代码

struct Edge{int a,b,c;
};void solve() {int n,m;cin>>n>>m;vector<vector<pii>> g(n+1);vector<Edge> es(m+1);for(int i=1;i<=m;i++){int a,b,c;cin>>a>>b>>c;es[i]={a,b,c};g[a].push_back({b,i}),g[b].push_back({a,i});}vector<bool> st(n+1);vector<ll> dist(n+1,1ll<<60);priority_queue<pll,vector<pll>,greater<pll>> q;dist[1]=0;q.push({dist[1],1});vector<vector<pii>> pas(n+1);while(q.size()){auto [dis,ver]=q.top();q.pop();if(st[ver]) continue;st[ver]=true;for(auto [y,id]:g[ver]){int w=es[id].c;if(dist[y]>dis+w){pas[y].clear();pas[y].push_back({ver,id});dist[y]=dis+w;q.push({dist[y],y}); }else if(dist[y]==dis+w){pas[y].push_back({ver,id});}}}vector<bool> st1(n+1);vector<vector<pii>> fg(n+1);auto dfs=[&](auto && self,int u)->void{if(st1[u]) return;st1[u]=true;for(auto [ver,id]:pas[u]){fg[u].push_back({ver,id}),fg[ver].push_back({u,id});self(self,ver);}};dfs(dfs,n);vector<int> dfn(n+1),low(n+1);vector<bool> fst(m+1);int timestamp=0;auto tarjan=[&](auto && self,int u,int fa)->void{dfn[u]=low[u]=++timestamp;for(auto [y,id]:fg[u]){if(!dfn[y]){self(self,y,u);low[u]=min(low[u],low[y]);if(low[y]>dfn[u]){fst[id]=true;}}else if(y!=fa){low[u]=min(low[u],dfn[y]);}}};tarjan(tarjan,1,0);for(int i=1;i<=m;i++){cout<<(fst[i]?"Yes":"No")<<endl;}
}

相关文章:

G - Road Blocked 2

G - Road Blocked 2 思路 只有当一条边是从 1 1 1到 n n n的所有最短路构成的图的桥时&#xff0c;去掉这条边&#xff0c;最短路才会变大 所以就可以用最短路加tarjan解决这道题了 怎么判断一条边是否可以构成最短路呢&#xff0c;比如求 1 1 1到 n n n的最短路&#xff0…...

R语言绘制Venn图(文氏图、温氏图、维恩图、范氏图、韦恩图)

Venn图&#xff0c;又称文氏图&#xff0c;标题中其他名字也是它的别称&#xff0c;由封闭圆形组成&#xff0c;代表不同集合。圆形重叠部分表示集合交集&#xff0c;非重叠处为独有元素。在生物学、统计学等领域广泛应用&#xff0c;可展示不同数据集相似性与差异&#xff0c;…...

【Vue.js】vue2 项目在 Vscode 中使用 Ctrl + 鼠标左键跳转 @ 别名导入的 js 文件和 .vue 文件

js 文件跳转 需要安装插件 Vetur 然后需要我们在项目根目录下添加 jsconfig.json 配置&#xff0c;至于配置的作用&#xff0c;可以参考我的另外一篇博客&#xff1a; 【React 】react 创建项目配置 jsconfig.json 的作用 它主要用于配置 JavaScript 或 TypeScript 项目的根…...

NVM配置与Vue3+Vite项目快速搭建指南

本文目录 1、配置环境1.1 NVM1、nvm常用命令 1.2 Mac配置环境1、安装nvm 1.3 Window配置环境1、安装nvm 2、 项目搭建2.1 项目依赖2.2 安装依赖2.3 配置1、别名配置2、创建样式及图片文件夹3、路由 2.4 项目搭建效果2.5 项目结构 在当今快速发展的前端技术领域中&#xff0c;掌…...

面试“利器“——微学时光

大家好&#xff0c;我是程序员阿药。微学时光是一款专为计算机专业学生和IT行业求职者设计的面试刷题小程序&#xff0c;它汇集了丰富的计算机面试题和知识点&#xff0c;旨在帮助用户随时随地学习和复习&#xff0c;提高自身的技术能力和面试技巧。 主题 随时随地学习&#x…...

【Unity】【游戏开发】游戏引擎是如何模拟世界的

【核心感悟】 游戏引擎通过两个维度的合并来模拟这个时间。 一个维度叫物理模型。 一个维度叫视觉模型。 对于物理模型&#xff0c;我们需要用物理引擎给予行为。 对于视觉模型&#xff0c;我们需要用动画去给予行为。 物理模型是真实机制&#xff0c;视觉模型是艺术表现&…...

vscode配置conda虚拟环境【windows系统】

安装好anacondavscode里安装python插件 3.点击左侧插件 如图1&#xff0c;再2&#xff0c;再点击3小星星激活conda环境 最后下方栏就出现conda环境了。就可以用啦...

libgpiod在imx8平台交叉编译说明

如下记录是在 imx8上测试使用 参考博主的文章 iMX6ULL 库移植 | Libgpiod 库的交叉编译及使用指南(linux) 编译说明 1: build.sh代码如下所示&#xff0c;先执行 source build.sh&#xff0c;注意修改交叉编译工具链为自己本地的地址&#xff1b; 2&#xff1a;执行 ./autogen…...

无人机之自主飞行关键技术篇

无人机自主飞行指的是无人机利用先进的算法和传感器&#xff0c;实现自我导航、路径规划、环境感知和自动避障等能力。这种飞行模式大大提升了无人机的智能化水平和操作的自动化程度。 一、传感器技术 传感器是无人机实现自主飞行和数据采集的关键组件&#xff0c;主要包括&a…...

performance.timing

performance.timing 是 Web 性能 API 的一部分&#xff0c;用于获取页面加载过程中的各个时间戳。这些时间戳可以帮助开发者分析页面加载性能&#xff0c;找出潜在的瓶颈。performance.timing 返回一个 PerformanceTiming 对象&#xff0c;该对象包含了多个属性&#xff0c;每个…...

教你不用下载 maven,不用配置环境变量,在 idea 上创建 maven 项目

我的主页&#xff1a;2的n次方_ 1. Maven Maven是⼀个项⽬管理⼯具, 通过 pom.xml ⽂件的配置获取 jar 包&#xff0c;⽽不⽤⼿动去添加 jar 包&#xff0c;这样就大大的提高了开发效率 2. Maven 的核心功能 2.1. 项目构建 创建第一个 Maven 项目 Maven 提供了标准的…...

linux 设置tomcat开机启动

在Linux系统中&#xff0c;要配置Tomcat开机自启动&#xff0c;可以创建一个名为 tomcat.service 的 systemd 服务文件&#xff0c;并将其放置在 /etc/systemd/system/ 目录下。以下是一个基本的服务文件示例&#xff0c;假设Tomcat安装在 /usr/local/tomcat 路径下&#xff1a…...

opencv出错以及解决技巧

opencv配置 一开始&#xff0c;include的路径是<opencv4/opencv2/…> 这样在using namespace cv的时候导致了报错&#xff0c; 所以在cmakelist中需要对cmake的版本进行升级。 set(CMAKE_CXX_FLAGS “-stdc14 -O0 -Wall”)-O0 表示在编译过程中不进行任何优化 对应的pac…...

Python爬虫进阶(实战篇一)

接&#xff0c;基础篇&#xff0c;链接&#xff1a;python爬虫入门&#xff08;所有演示代码&#xff0c;均有逐行分析&#xff01;&#xff09;-CSDN博客 目录 1.爬取博客网站全部文章列表 ps:补充&#xff08;正则表达式&#xff09; 爬虫实现 爬虫代码&#xff1a; 2.爬…...

运维面试题(2)

ssh服务&#xff08;重点&#xff09;协议使用 端口 号&#xff1a;默认是 22&#xff0c; 可以是被修改的&#xff0c;如果需要修改&#xff0c;则需要修改 ssh 服务的配置文件&#xff1a;#/etc/ssh/ssh_config&#xff0c;可以通过这个配置文件来修改端口 端口号可以修改&am…...

Django CSRF Token缺失或不正确

在Django中&#xff0c;CSRF&#xff08;跨站请求伪造&#xff09;验证失败&#xff0c;提示“CSRF token missing or incorrect”的错误&#xff0c;通常是由以下几个原因造成的&#xff1a; 忘记在表单中添加 {% csrf_token %} 模板标签&#xff1a;这是最常见的原因之一。确…...

10.12Python数学基础-矩阵(下)

9.矩阵的转置 矩阵的转置&#xff08;Transpose&#xff09;是矩阵操作中的一种基本运算。它通过交换矩阵的行和列来生成一个新的矩阵。具体来说&#xff0c;如果 A 是一个 mn 的矩阵&#xff0c;那么它的转置矩阵 A^T 是一个 nm 的矩阵&#xff0c;其中 A^T 的第 i 行第 j 列…...

vue网络自学知识点汇总

初体验 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><!--1.引入vue.j…...

Springboot项目Activemq延迟自定义消息完整代码案例(亲测可用)

1、porm.xml增加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId> </dependency> 2、application.properties增加配置 # 连接地址 spring.activemq.broker-url=fa…...

常见ElasticSearch 面试题解析(上)

前言 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java语言开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是一种流行的企业级搜索引擎。ElasticSearch…...

Qwen3-VL-8B支持多场景扩展:轻松接入RAG、插件系统与企业身份认证

Qwen3-VL-8B支持多场景扩展&#xff1a;轻松接入RAG、插件系统与企业身份认证 1. 项目概述 Qwen3-VL-8B AI聊天系统是一个基于通义千问大语言模型的完整Web应用解决方案。这个系统不仅仅是一个简单的聊天界面&#xff0c;而是一个具备高度扩展性的企业级AI对话平台。 系统采…...

OpenClaw模型热切换:Qwen3-14B与本地小模型协同工作方案

OpenClaw模型热切换&#xff1a;Qwen3-14B与本地小模型协同工作方案 1. 为什么需要模型热切换&#xff1f; 去年我在处理一个自动化报表生成项目时&#xff0c;发现OpenClaw调用大模型完成简单表格整理任务也要消耗大量Token。这就像用航天飞机送快递——不是不能做&#xff…...

告别时序困惑:用TimeQuest(Timing Analyzer)搞定FPGA源同步接口SDC约束(含SDR/DDR实战)

时序约束实战&#xff1a;FPGA源同步接口SDC约束全解析 1. 源同步接口的时序挑战 在高速数字系统设计中&#xff0c;源同步接口已成为FPGA与外部设备通信的主流方案。与传统的系统同步接口不同&#xff0c;源同步接口的时钟由发送端&#xff08;FPGA或外部器件&#xff09;提供…...

线性时不变系统的容错模型预测控制与同态加密融合研究 —— 以连续搅拌式反应器为例(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

GraphSAGE实战:用PyTorch Geometric从零实现一个‘归纳式’节点分类器(附完整代码)

GraphSAGE实战&#xff1a;用PyTorch Geometric实现归纳式节点分类器 在社交网络分析、推荐系统和生物信息学等领域&#xff0c;图数据无处不在。传统深度学习模型难以直接处理这种非欧几里得结构的数据&#xff0c;而图神经网络(GNN)的出现改变了这一局面。GraphSAGE作为GNN家…...

Cgo回调中处理 const char- 参数的正确方法

本文详解如何在 Cgo 中为 C 回调函数正确声明和实现接收 const char* 参数的 Go 导出函数&#xff0c;解决因类型不匹配导致的编译错误&#xff0c;并提供可直接复用的类型别名方案与完整示例。 本文详解如何在 cgo 中为 c 回调函数正确声明和实现接收 const char* 参数的…...

无代码玩法:OpenClaw网页控制台配合Qwen3.5-9B处理电商截图

无代码玩法&#xff1a;OpenClaw网页控制台配合Qwen3.5-9B处理电商截图 1. 为什么选择OpenClaw处理电商截图 作为一个经常网购的技术爱好者&#xff0c;我发现自己经常需要手动整理不同平台的商品价格信息。传统的做法是截图后人工录入Excel&#xff0c;既耗时又容易出错。直…...

嵌入式硬件设计核心架构与电源系统详解

1. 嵌入式硬件设计核心架构解析嵌入式系统的硬件架构就像一座精心设计的城市&#xff0c;CPU作为市长统筹全局&#xff0c;外围设备则是各个职能部门。这种架构最显著的特点就是硬件可裁剪性——我们可以根据实际需求灵活增删模块&#xff0c;就像城市规划中按需建设不同功能区…...

V数据库设计

一、章节核心定位第二章通常是数据库设计的需求分析与概念结构设计阶段&#xff0c;是整个数据库设计流程的核心起点&#xff0c;直接决定后续逻辑结构、物理结构设计的合理性&#xff0c;是从业务需求到数据模型的关键转化环节。二、核心知识点梳理1. 需求分析阶段&#xff08…...

STM32驱动WS2812B做时钟?从5x5模块到4x1组合屏的实战避坑指南

STM32驱动WS2812B做时钟&#xff1a;从5x5模块到4x1组合屏的实战避坑指南 在创客圈子里&#xff0c;用WS2812B LED模块制作个性化时钟一直是个热门项目。这种可编程RGB LED以其简单的单线控制接口和丰富的色彩表现&#xff0c;成为DIY爱好者的心头好。但当你真正动手时&#x…...