洛谷2296 寻找道路

c++ spfa+洛谷2296 寻找道路 Hi 大家好今天是2020/8/26蒟蒻来给大家讲spfa 注意:加粗的可以不用看 一.算法简介 SPFA(Shortest Path Faster Algorithm)算法是求单源最短路径的一种算法,它是Bellman-ford(贝尔曼福特)的队列优化,它是一种十分高效的最短路算法。很多时候,给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。SPFA的复杂度大约是O(kE),k是每个点的平均进队次数(一般的,k是 阅读详情

原题地址

https://www.luogu.org/problem/show?pid=2296

图论广搜最短路

解题思路

删点+反向bfs。反向建边建一个邻接表,枚举每个入度为0的点(终点除外),与该点直接相连的点都打上false标记。处理完之后从终点开始bfs(或者最短路也行),只走未被标记的点。

参考代码

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int num=0;
int v[2000005],r[2000005];
bool vis[1000005],f[2000005];
struct mc
{
     intx,y;
}a[2000005];
 
struct cm
{
     intx,y,ne;
}e[2000005];
 
struct mn
{
     intx,ans;
}p[2000005];
 
void put(int x,int y)
{
     num++;
     e[num].x=x;
     e[num].y=y;
     e[num].ne=v[x];
     v[x]=num;
}
 
void clean(int x)
{
     f[x]=1;
     for(int i=v[x];i;i=e[i].ne)
         f[e[i].y]=1;
}
 
int main()
{
     ios::sync_with_stdio(false);
     memset(f,0,sizeof(f));
     memset(v,0,sizeof(v));
     memset(vis,0,sizeof(vis));
     memset(r,0,sizeof(r));
     intn,m;
     cin>>n>>m;
     for(int i=1;i<=m;i++)
         cin>>a[i].x>>a[i].y;
     intsx=0,sy=0,rx;
     for(int i=1;i<=m;i++)
     {
         if(a[i].x==sx&&a[i].y==sy) continue;
         if(a[i].x==a[i].y) continue;
         put(a[i].y,a[i].x);
         r[a[i].x]++;
     }
     cin>>sx>>rx;
     for(int i=1;i<=num;i++)
         if(!r[i]&&i!=rx) clean(i);
     int t=0,w=1;
     p[1].x=rx,p[1].ans=0;
     while(t<w)
     {
         t++;
         intx=p[t].x;
         for(int i=v[x];i;i=e[i].ne)
         {
              inty=e[i].y;
              if(f[y]||vis[y]) continue;
              w++;
              p[w].x=y;
              p[w].ans=p[t].ans+1;
              if(y==sx)
              {
                   cout<<p[w].ans;
                   return0;
              }
         }
     }
     cout<<-1;
     return0;
}


【题解】洛谷 P2296 [NOIP2014 提高组] 寻找道路 题目传送门 题意: 无向连通图 GGG 有 nnn 个点,n−1n-1n−1 条边。点从 111 到 nnn 依次编号,编号为 iii 的点的权值为 WiW_iWi​,每条边的长度均为 111。图上两点 (u,v)(u,v)(u,v) 的距离定义为 uuu 点到 vvv 点的最短距离。对于图 GGG 上的点对 (u,v)(u,v)(u,v),若它们的距离为 222,则它们之间会产生 Wu×WvW_u\times W_vWu​×Wv​ 的联合权值。 请问图 GG 上所有可产生联合权值的有序点对中,联合权值最大 阅读详情

相关推荐

Canoe CAPL TCP通信避坑指南:从OnTcpConnect回调不触发到Socket句柄管理

本文详细解析了Canoe CAPL中TCP通信的常见问题与解决方案,包括OnTcpConnect回调不触发的三大原因、Socket句柄管理的内存泄漏风险、数据发送截断规则等。通过实战案例和代码示例,帮助开发者规避TCP通信中的典型陷阱,提升车载网络测试的稳定性和可靠性。

weixin_26976635的博客 358

洛谷P2296 寻找道路(图论,BFS)

【题目描述】 在有向图GGG中,每条边的长度均为111,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通。 在满足条件111的情况下使路径最短。 注意:图GGG中可能存在重边和自环,题目保证终点没有出边。 请你输出符合条件的路径的长度。 【输入格式】 第一行有两个用一个空格隔开的整数nnn和mmm,表示图有nnn个点和mmm条边。 接下来的mmm行每行222个整数x,yx,yx,y,之间用一个空格隔开,表示有一条边从点xxx指向

一只快乐的小蒟蒻~ 425

SystemC实战:用C++搞芯片建模的5个典型场景(含代码示例)

本文通过五个典型实战场景,详细介绍了如何使用SystemC这一基于C++的硬件建模库进行芯片设计与系统级建模。内容涵盖从基础并发模块构建、事务级总线建模、跨时钟域验证,到与ModelSim协同仿真及多核系统性能探索,并提供了完整的代码示例,帮助软件工程师利用熟悉的C++工具链高效参与硬件架构设计与验证。

weixin_29191761的博客 314

【题解】洛谷P2296 寻找道路(最短路 bfs)

这道题理论上用bfs是可以解决的,但要判断的条件比较多。看到数据范围后,我决定还是用最短路来解决更加方便。 思路就是我们要处理出不能用的点,然后跑最短路时判断如果出现这个点跳过就好了。 判断不能用的点,我们可以从终点开始扩散,将到达的每一个点打上标记。这样我们就可以初步找出从起点出发进入某个点是死胡同的情况。处理出这些点后,我们再从起点出发,对每一个打过标记的点进行操作,如果打过标记的点扩展出...

Rem_Inory的博客 563

紫光同创PGL50H开发板PCIE通信保姆级教程:从IP核安装到Windows设备管理器识别

本文详细介绍了紫光同创PGL50H开发板PCIE通信的全流程,从IP核安装到Windows设备管理器识别。通过环境搭建、工程配置、管脚约束、固件烧录等步骤,帮助开发者快速掌握FPGA与PCIE通信技术,解决实际开发中的常见问题,提升开发效率。

weixin_30500473的博客 432

AVS3代码阅读HPM4.0

参考AVS3代码阅读(HPM6.0)(一.整体架构以及CU划分部分代码) 版本:HPM4.0 核心文件:app_encoder.c   要做的是帧间预测,所以前面的函数先暂时不管了,挖个坑以后再填。直接从enc_pic看起。 enc_pic()    ...

CRR的博客 3187

洛谷—P2296 寻找道路(图论、搜索)

解题思路: 由题意可以知道,所求的最短路径上的点必须满足一个条件,条件是这些点以及其出边指向的点必须直接或者间接与终点相连,也就从这些点到终点有路径。我们很容易想到方法,先求最短路径,然后判断路径上的各点是否满足条件,不满足条件则回溯继续搜索,但是这并不是一种简便的方法。 比较快速且易理解的方法是,先从终点反向遍历图,标记每个经过的点,之后枚举每一个点找到没被遍历到的点,删除它以及与它有一条相...

weixin_43784305的博客 324

在MacBook M1/M2上,手把手教你打包包含嵌入模型的RagFlow Docker镜像(避坑指南)

本文详细指导如何在MacBook M1/M2上构建ARM64架构的RagFlow Docker镜像,涵盖环境准备、依赖处理、镜像构建及性能优化全流程。特别针对Apple Silicon芯片的兼容性问题提供解决方案,帮助开发者高效完成本地开发环境搭建。

weixin_26908317的博客 240

洛谷 P2296 寻找道路

题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通。 2 .在满足条件1 的情况下使路径最短。 注意:图G 中可能存在重边和自环,题目保证终点没有出边。 请你输出符合条件的路径的长度。 输入输出格式 输入格式: 输入文件名为road .in。 第一行

syyer 360

无线通信技术及其在机器人中的应用

本文系统阐述了无线通信技术在机器人领域的应用框架与技术选型。首先构建了无线通信的三层理论架构:物理层解决信号传输问题,链路层处理接入控制,网络层实现组网管理。随后详细分析了主流无线技术的特性与适用场景:BLE适用于低功耗传感器节点,Wi-Fi适合高带宽视频传输,5G专网满足工业AGV的广域覆盖需求,星闪技术凭借20μs超低时延和4096台并发连接能力,为高端机器人应用提供突破性解决方案。通过鄂尔多斯隆基5G专网等典型案例,验证了5G在工业AGV规模化部署中的优势,并展望了通感算智融合、星闪+5G协同等未来发

weiyvyy的博客 1114

PyTorch生成式人工智能——VQ-VAE详解与实现

VQ-VAE (Vector Quantised-Variational AutoEncoder) 的核心思想就是将 VAE 的连续潜变量离散化。它通过学习一个码本 (Codebook) 来实现这一点,码本是一个包含有限个嵌入向量的字典。模型不是直接输出一个连续的潜在向量,而是从码本中找出与编码器输出最接近的嵌入向量来代替它。本节首先详细讲解 VQ-VAE 的技术原理,然后使用 PyTorch 从零开始实现 VQ-VAE 模型。

盼小辉丶的博客 3263

洛谷 P2296 寻找道路(最短路) 题解

题目来源: https://www.luogu.org/problemnew/show/P2296 题目描述: 题目描述 在有向图 GG 中,每条边的长度均为 11,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通。 在满足条件11的情况下使路径最短。 注意:图 GG 中可能存在重边和自环,题目保证终点没有...

摇摇乐的博客 1097

RT-DETR改进策略【卷积层】| CVPR2025 GBConv轻量门控瓶颈卷积 低秩瓶颈降参 + 门控聚焦形态,强效捕捉纤细目标

裂缝形态不规则、纹理纤细,传统卷积参数大、计算冗余,且无法动态聚焦裂缝形态;背景噪声强易干扰特征提取,需要轻量且能自适应聚焦裂缝形态的卷积单元,因此提出轻量门控瓶颈卷积 GBC。

Limiiiing的博客 138

洛谷 P2296 【寻找道路】

题库 :洛谷 题号 :2296 题目 :寻找道路 link :https://www.luogu.com.cn/problem/P2296 思路 :首先既然要满足第一个条件,我们可以建反向边,从起点出发走反向边,标记所能到达的点。没有被标记过的点就把他的父亲(谁到它的点)和它本身给标记为不可到达,然后就求最短路,如果碰到标记为不可到达的点,就continue,最后di...

weixin_30420305的博客 199

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【题解】洛谷P2296 [NOIP2014]寻找道路

题目 洛谷P2296寻找道路 题解 如果要确定一个点能否到达终点,就要从这个点开始搜索,想要确定所有的点,很耗时间。于是考虑反向操作,看从终点能倒着访问到哪些点。建一张反图(交换每条边的两个端点),从终点开始搜索,能够到达的点即是可以到终点的点。 代码 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int inf=0x3f3f3f3f; const int

zjgmartin的博客 320

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

洛谷——P2296 寻找道路

https://www.luogu.org/problem/show?pid=2296#sub 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通。 2 .在满足条件1 的情况下使路径最短。 注意:图G 中可能存在重边和自环,题目保证终点没有出边。...

agcozdwdfvds08078的博客 125

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

洛谷P2296 寻找道路

题目描述 在有向图 GGG 中,每条边的长度均为 111,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通。 在满足条件1 1 1的情况下使路径最短。 注意:图 GGG 中可能存在重边和自环,题目保证终点没有出边。 请你输出符合条件的路径的长度。 输入输出格式 输入格式: 第一行有两个用一个空格隔开的整数 nnn...

L_Y_T020321的博客 310

洛谷 P2296 寻找道路 —— bfs

题目:https://www.luogu.org/problemnew/show/P2296 第一次用 Emacs 对拍,写了半天; 注意那个 is 赋值的地方很容易错,千万别反复赋值; 一道水题写了一个下午,崩溃。 代码如下: #include<iostream> #include<cstdio> #include<cstring>...

aodan5477的博客 255

洛谷 题解 P2296 【寻找道路】

Problem P2296 【寻找道路】 solution 首先声明,这题我用了spfa,而: 关于spfa:它死了。 杀手:NOI2018−T1出题人 感谢出题人,没有卡spfa 用时: 20ms 空间: 5082KB(4.74MB) 代码长度: 3.32KB 提交记录:R9776986 先说思路: 首先,要处理出哪些点不能直接或间接与终点连通...

weixin_30545285的博客 261

【洛谷 2296】寻找道路

问题描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通。 2 .在满足条件1 的情况下使路径最短。 注意:图G 中可能存在重边和自环,题目保证终点没有出边。 请你输出符合条件的路径的长度。 输入 第一行有两个用一个空格隔开的整数n 和m ,表示图有n 个点和m

Fallen_Angel001的博客 687

【洛谷P2296】寻找道路

反正图两边bfs 1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 5 using namespace std; 6 7 inline int readint(){ 8 int x=0,f=1; 9 char ch=ge...

diefou0453的博客 158

洛谷 [P2296] 寻找道路

反向BFS预处理,求出所有符合题意的点,再正向BFS,(注意对于边权恒为一的点,BFS,比SPFA高效) 输入时n与m分清 #include <iostream> #include <cstdio> #include <algorithm> #include <cstdlib> #include <queue> #include...

170
上一篇: 洛谷1965 转圈游戏
下一篇: 洛谷1073 最优贸易
zero_from
博客等级 码龄10年 11粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值