1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

  • 问题抽象为:给定一个无向、正权图(路由器为点,链路代价为边权),求源路由器 s 到目的路由器 t 的最短路代价;同时给出当目的为 t 时,源路由器 s 的“下一跳集合”(即所有能出现在某条最短路径第一条边的相邻路由器)。

  • 相关算法:Dijkstra 最短路算法(边权为正,适用)。

  • 核心做法:

    1. 用邻接表存图,边为双向,权为 Lij。
    2. 分别从 s 与 t 各跑一次 Dijkstra,得到 distS[x] = s→x 的最短距离、distT[x] = x→t 的最短距离。
    3. 若 distS[t] 为无穷大(不可达),输出代价 -1 和下一跳 -1。

P4224.第2题-转发下一跳问题

    1000ms Tried: 178 Accepted: 36 Difficulty: 7 所属公司 : 华为
    算法与标签>最短路算法

题目内容

网络中有 nnn 台路由器 R1,R2,...,RnR1,R2,...,RnR1,R2,...,Rn,两台路由器之间最多只有一条链路双向连通,每条链路有对应的转发成 本 Lij(Lij>0,Lij=Lji)Lij(Lij>0,Lij=Lji)Lij(Lij>0,Lij=Lji) 。以 RiRiRi 为源节点进行转发时,会以 RiRiRi 为根基于链路转发成本计算一棵最短路径树,RiRiRi 到其它 RjRjRj 的报文会沿着最短路径树进行转发。以下图拓扑为例,R1R1R1 到 R2R2R2 的最短路径为 R1−>R2R1->R2R1−>R2 ,最小转发代价为 555 (所有路径成本之和).

转发的下一跳定义如下: 源节点 SSS 到目的节点 DDD 的最短路径上 SSS 的直连的邻居节点,用来指导报文从哪条链路转发。以下图为例,R1R1R1 到 R2R2R2 的转发下一跳为 R2R2R2 。

需要注意的是,最短路径树中最短路径可能不止一条,对应转发的下一跳可能存在多个。以下图为例,R1R1R1 到 R3R3R3 的最短路径有两条,分别为: R1−>R2−>R3;R1−>R4−>R3R1->R2->R3;R1->R4->R3R1−>R2−>R3;R1−>R4−>R3,R1R1R1 到 R3R3R3 的转发下一跳为 R2、R4R2、R4R2、R4 。

任务:给定路由器数量和路由器之间的连通关系及转发成本,并指定两个路由器 Ri、RjRi、RjRi、Rj ,计算以 RjRjRj 为目的时, RiRiRi 到 RjRjRj 的最小转发代价,以及 RiRiRi 的转发下一跳的集合。

输入描述

第 111 行包含两个整数,分别表示路由器个数 nnn 、连通关系个数 k,1<=n<=1000,1<=k<=n∗(n−1)/2k,1<=n<=1000,1<=k<=n*(n-1)/2k,1<=n<=1000,1<=k<=n∗(n−1)/2

第 222 行开始的 kkk 行代表链路信息,每行 333 个正整数:路由器 RiRiRi 、路由器 RjRjRj 、链路转发成本 LijLijLij ,1<=Lij<=1001<=Lij<=1001<=Lij<=100,Ri、RjRi、RjRi、Rj 在 [1,n][1,n][1,n] 范围内

最后一行包含 222 个正整数,为源路由器 RiRiRi ,以及目的路由器 RjRjRj 。

输出描述

输出包括两行:

第一行为 RiRiRi 到 RjRjRj 之间的最小转发代价

第二行为一个正整数序列,以单个空格间隔,表示以 RjRjRj 为目的时,RiRiRi 的转发下一跳集合,要求升序排列。

注:

1.若两个路由器之间未连通,则最小转发代价为 111 ,转发下一跳集合为 −1-1−1

2.若源节点和目的节点为同一个点,最小转发代价为 000 ,转发下一跳集合为 −1-1−1

样例1

输入

4 3
1 2 5
1 3 5
2 3 5
1 4

输出

-1
-1

说明

111 作为源路由器,444 作为目的路由,1−>41->41−>4 路径不可达,最小转发代价为 −1-1−1 ,转发下一跳集合为空

样例2

输入

4 4
1 2 5
2 3 5
3 4 5
1 4 5
1 3

输出

10
2 4

说明

111 作为源路由器,333 作为目的路由器,1−>31->31−>3 的最短路径为 1−>2−>31->2->31−>2−>3 和 1−>4−>31->4->31−>4−>3 ,最小转发代价为101010 ,转发下一跳集合为 242424

样例3

输入

4 4
1 2 5
2 3 5
3 4 5
1 4 10
1 3

输出

10
2

说明

111 作为源路由器,333 作为目的路由器,1−>31->31−>3 的最短路径为 1−>2−>31->2->31−>2−>3 , 最小转发代价为 101010 。转发下一跳仅 有 222

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 3, 84ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?