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

P2865 [USACO06NOV] Roadblocks G

思路:严格次短路,在任何情况下如果发现一条从1到i的路,都有以下情况:

        1.该路径小于当前1到i的最短路,将最短路替换

         2.该路径长度等于当前最短路,舍去

        3.该路径大于最短路且小于次短路,将此路径替换次短路,

        4.该路径长度大于或等于目前次短路,舍去

我们要跳出整个最短路,枚举所有边,这个时候可以我们可以预处理两条最短路,因为是双向边,我们用一个d[ ][0]数组表示1到其他点的最短路,d[ ][1]数组表示其他点到n的最短路

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=5e3+10,M=2e5+10;
struct node{int nxt,to,dis;
}e[M];
int n,m,x,y,z,h[N],ct;
void add(int x,int y,int z){e[++ct].nxt=h[x],e[ct].to=y,e[ct].dis=z,h[x]=ct;
}//链式前向星
int d[N][2];//两种不同状态
bool vis[N];
queue<int> q;
void spfa(int s){memset(d,0x7f,sizeof(d));q.push(s);vis[s]=1;d[s][0]=0;while(!q.empty()){int u=q.front();vis[u]=0;q.pop();for(int i=h[u];i;i=e[i].nxt){int v=e[i].to;if(d[v][0]>d[u][0]+e[i].dis){d[v][1]=d[v][0];d[v][0]=d[u][0]+e[i].dis;if(!vis[v])vis[v]=1,q.push(v);}if(d[v][1]>d[u][0]+e[i].dis&&d[u][0]+e[i].dis>d[v][0]){d[v][1]=d[u][0]+e[i].dis;if(!vis[v])vis[v]=1,q.push(v);}if(d[v][1]>d[u][1]+e[i].dis){d[v][1]=d[u][1]+e[i].dis;if(!vis[v])vis[v]=1,q.push(v);}}} 
}//spfa做次短路
int main(){ios::sync_with_stdio(0);cin>>n>>m;for(int i=1;i<=m;i++){cin>>x>>y>>z;add(x,y,z);add(y,x,z);//双向建边}spfa(n);cout<<d[1][1]<<endl;
}

http://www.dtcms.com/a/325808.html

相关文章:

  • 音视频学习(五十三):音频重采样
  • 数据备份与进程管理
  • AI大模型:(二)5.1 文生视频(Text-to-Video)模型发展史
  • Apache ECharts 6 核心技术解密 – Vue3企业级可视化实战指南
  • Apache Ignite 核心组件:GridClosureProcessor解析
  • ChatML vs Harmony:深度解析OpenAI全新对话结构格式的变化
  • 基于Spring Boot房源信息推荐系统的设计与实现 -项目分享
  • Maven <pom.xml> 标签详尽教程
  • perl notes【1】
  • 云原生环境Prometheus企业级监控
  • 【Node.js从 0 到 1:入门实战与项目驱动】1.3 Node.js 的应用场景(附案例与代码实现)
  • 论文阅读:Aircraft Trajectory Prediction Model Based on Improved GRU Structure
  • 《开源标准推动Linux驱动生态繁荣》
  • 实现分页功能【jQuery】
  • GDB调试 core dump 文件与栈溢出分析
  • 《Python入门:从零到Hello World的极简指南》
  • 板子 7.20--8.11
  • Spring Boot 参数校验 Validation 入门
  • 华为云计算的行业趋势:迈向智能、融合与绿色的未来
  • 【工控】线扫相机小结 第六篇
  • 用vscode 里docker显示不出有容器和镜像 ?
  • 通用 maven 私服 settings.xml 多源配置文件(多个仓库优先级配置)
  • SQL179 每个6/7级用户活跃情况
  • 十一、Linux Shell脚本:函数与模块化
  • 逃离城市与喧嚣,拥抱新的生活方式
  • 开博尔雷电5数据线:120Gbps“闪电传输”,以Intel硬核基因从容优化数字生活
  • 【SpringBoot】持久层 sql 注入问题
  • C/C++练习面试题
  • PyTorch基础(使用Numpy实现机器学习)
  • PyTorch基础(使用Tensor及Antograd实现机器学习)