首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >图中只有一处变化的所有最短路径

图中只有一处变化的所有最短路径
EN

Stack Overflow用户
提问于 2019-03-03 16:06:26
回答 1查看 74关注 0票数 1

假设我有一个有向图G(V,E),它的权重为正整数,我需要做的就是找出其中一些边之间的最小距离,nodes.In,这个最小距离路径,我最多只能使用K条反向边。例如,对于此输入:

6(节点)

9(边)

2(正整数K)

10 (找到最小距离所需的边对数)

2 1 2(2的边缘->1,权重为2)

3 2 7(3的边缘->2,权重为7)

4 5 6

1 3 8

1 4 4

5 2 8

5 6 10 (边缘7)

1 5 5(边缘8)

4 2 5(边9)

1 6 1(问题1:使用1条反向边找到从1到>6的最小距离)

3 5 0(问题2:使用0反向边找到与3->5的最小距离)

1 2 0

3 5 1

1 2 1

4 3 1

6 4 0

2 6 2

6 4 1

6 4 2(问题10)

输入的不同部分可以使用边数(9,包含3个数字的前9行)和提出的问题数( 10,边后面的10行)进行分隔。

输出必须是:

15 (问题1的答案:使用1条反向边从1到>6的最小距离是15)

14

9

13

2

12

不可能(这两条边之间没有使用0反向边的路径)

17

24

16

我想过为每个问题和每条边运行Dijkstra,而不是只计算到源的最小距离,使用反向边,并在不使用超过K个反向边的情况下尽可能多地更新值。(标签可能是这样的(节点号,到源的最小距离,使用的反向边).But dijkstra找到从源到所有其他节点的最短路径,我认为这可能对我的instance.Could有点夸张这是不是可以更有效地完成?

EN

回答 1

Stack Overflow用户

发布于 2019-03-03 16:48:34

您可以在每个节点上运行dijkstra,将该图视为无向图。您需要跟踪最小距离和使用的反向节点的数量。例如,假设起始节点为3。

假设我们需要在问题中找到(310)和(311)。

我们将节点3初始化为(0,0),将所有其他节点初始化为(无穷大,0)。从节点3,我们可以直接转到节点2,也可以转到反向的节点1。所以我们得到了

节点1(8,1)和节点2(7,0)

从Node 2开始,我们直奔Node 1。因此我们得到了

Node1(8,1)(9,0)。这意味着,如果反转0条边,则从节点3到节点1的最小值为9;如果反转1条边,则最小值为8。

对于每个节点,你可以在HashMap中跟踪它们,答案是0到k之间的最小距离。例如,我们可以得到Node2(7,0)(10,2)。在这里,当允许两条边反转时,答案仍然是7作为10>7。

该算法的复杂度为O(n*(n+m))。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54970810

复制
相关文章
【iOS】基于Realm数据库的记账软件--Realm数据库(一)
</br> 以上,就是该项目的所有数据库表。实际项目会因业务需求,追加一些字段,但核心还是不变的。
MapleYe
2020/03/31
1.5K0
【iOS】基于Realm数据库的记账软件--Realm数据库(一)
Android数据库Realm实践
Android开发中常用的数据库有5个: 1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM。支持JDBC连接,Spring以及Android平台。语法中广泛使用了注解(Annotation)。 2. SugarORM SugarORM 是 Android 平台专用ORM。提供简单易学的APIs。可以很容易的处理1对1和1对多的关系型数据,并通过3个函数save(), delete() 和 find() (或者 findById()) 来简化CRUD基本操
xiangzhihong
2018/02/02
1.5K0
Android数据库Realm实践
Innodb存储引擎中的后台线程介绍
在Innodb存储引擎中,后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外它会将已经修改的数据文件刷新到磁盘文件中,保证数据库在发生异常的情况下,Innodb能够恢复到正常的运行状态。上一节中我们讲到了redo log的刷盘操作,其实就是后台线程帮忙完成的。
AsiaYe
2020/02/27
1.2K0
React Native 使用Realm数据库组件
使用Realm Studio来调试查看编辑数据库里的数据,支持Mac、Windows、Linux。
forrest23
2018/08/03
1.4K0
React Native 使用Realm数据库组件
Realm数据库学习之快速入门
任何数据库都无非是CRUD的操作,也就是为了增、删、改、查的使命。 相对于传统的原生的Sqlite开发,Realm的API使开发者显得轻松自在。
Frank909
2019/01/14
6700
Realm数据库 从入门到“放弃”
Realm是由Y Combinator公司孵化出来的一款可以用于iOS(同样适用于Swift&Objective-C)和Android的跨平台移动数据库。目前最新版是Realm 2.0.2,支持的平台包括Java,Objective-C,Swift,React Native,Xamarin。
一缕殇流化隐半边冰霜
2018/08/30
5.1K0
后台线程和ui线程
后台线程 mfc AfxBeginThread创建函数或者对象中的静态函数 dotnet Task.Run或者new Thread ui线程 mfc 继承CWinThread、给子类绑定dialog,窗口在独立的线程中初始化和析构。 class CUIThread : public CWinThread { DECLARE_DYNCREATE(CUIThread) protected: CUIThread(); // 动态创建所使用的受保护的构造函数 virt
sofu456
2020/02/18
5250
iOS开发中使用Realm数据库
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/79152984
用户1451823
2018/09/13
8870
【iOS】基于Realm数据库的记账软件--前言
笔者在今年毕业的时候,为了应付学校的毕业设计,因此做了一款基于Realm数据库的记账软件。现在毕业后,稍微闲下来了,所以打算将整个项目的核心实现步骤记录下来,供大家学习学习。当然,项目中肯定还存在着大大小小的bug,例如数据的溢出等细节处理。那么先让大家看看项目的效果图吧~
MapleYe
2020/03/31
8220
【iOS】基于Realm数据库的记账软件--前言
解密openGauss数据库中的函数依赖关系
生活中总是存在着错综复杂的联系,例如喜欢打篮球的人,身高普遍比较高;喜欢穿艳丽色衣服的人,性格会普遍比较开朗;在超市买炸鸡的人,会大概率买啤酒。而反过来,这种联系并不一定成立。
叶秋学长
2023/02/01
1.2K0
解密openGauss数据库中的函数依赖关系
生活中总是存在着错综复杂的联系,例如喜欢打篮球的人,身高普遍比较高;喜欢穿艳丽色衣服的人,性格会普遍比较开朗;在超市买炸鸡的人,会大概率买啤酒。而反过来,这种联系并不一定成立。
大柏树
2022/12/13
1.2K0
解密openGauss数据库中的函数依赖关系
SqlServer 错误:"SQL Server 无法生成 FRunCM 线程" -- 解决办法
开始-》Sql server 2005-》配置工具-》SQL Server Configuration Manager-》sql协议-》禁止VIA
拓荒者IT
2019/09/26
1.2K0
前台线程和后台线程总结
.Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。
wfaceboss
2019/04/08
1.9K0
shiro教程3(加密)
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容
Java帮帮
2019/12/13
7840
shiro教程3(加密)
Shiro Realm
Realm: 域,Shiro 从 Realm 中获取用户,角色,权限信息。可以把 Relam 看成 DataSource,即安全数据源。
一份执着✘
2018/08/27
8400
realm.io
java版本的github:https://github.com/realm/realm-java
阿超
2022/12/11
3460
realm.io
OAuth2 服务器Keycloak中的Realm
Realm翻译成中文为领域。用来逻辑隔离一些特定空间,有点多租户的感觉,不同的Realm之间互相隔离,有各自的特色配置,互不影响。
码农小胖哥
2021/09/09
1.8K0
【iOS】基于Realm数据库的记账软件--记账模块(二)
从记账的需求出发,该界面需要用户输入以下账单信息: (1)账单金额 (2)账单类型 (3)相关账户 (4)账单产生的日期 (5)备注 那么,结合一下需求,开始构思一下界面如何搭建吧。
MapleYe
2020/03/31
1.1K0
【iOS】基于Realm数据库的记账软件--记账模块(二)
【Android】Realm详解
介绍 Realm 是一个 MVCC (多版本并发控制)数据库,由Y Combinator公司在2014年7月发布一款支持运行在手机、平板和可穿戴设备上的嵌入式数据库,目标是取代SQLite。 Realm 本质上是一个嵌入式数据库,他并不是基于SQLite所构建的。它拥有自己的数据库存储引擎,可以高效且快速地完成数据库的构建操作。和SQLite不同,它允许你在持久层直接和数据对象工作。在它之上是一个函数式风格的查询api,众多的努力让它比传统的SQLite 操作更快 。 详细介绍(如果进不去,看这个也行)
Gavin-ZYX
2018/05/18
4.5K0
点击加载更多

相似问题

Realm -在后台线程上批量更新RLMResults

124

Realm DB -如何在Android中解密Realm DB?

14

Realm在后台获取错误的数据

10

无法命名后台线程,无效错误

23

如何将realm对象从后台线程传递到UiThread?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档