DeepSeek-R1 论文笔记:通过强化学习提升大语言模型的推理能力
论文标题:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
作者团队:DeepSeek-AI
发表时间:2025
前置知识 & 术语
模型蒸馏
语言模型蒸馏的目标是将大型教师模型的知识(如语义理解、上下文推理能力)传递给小型学生模型。
为什么需要蒸馏?
大型模型在训练中积累了丰富的“隐性知识”,例如:
- 类别间的关系:识别“猫”时,模型可能隐含知道“猫与豹子相似度高于卡车”。
- 特征分布规律:图像中的纹理、颜色等特征的组合模式。
但这些知识无法通过传统硬标签(如“这张图是猫”)传递给学生模型。蒸馏的核心目标,就是通过软标签(Soft Labels)或特征匹配,将这些隐性知识“提炼”出来。
软标签 vs 硬标签
- 硬标签:
[0, 0, 1, 0]
(直接标注类别) - 软标签:
[0.01, 0.02, 0.95, 0.02]
(概率分布)
软标签包含更多信息:
- 教师模型认为“豹子”与“猫”有一定相似性(概率0.02)。
- 学生模型不仅能学习分类结果,还能理解类别间的关系。
蒸馏技术
- Logits蒸馏(Hinton, 2015):这是最经典的蒸馏方法,直接让学生模型模仿教师模型的输出分布。
- 中间特征蒸馏:要求学生模型对齐教师模型的中间层特征
Post-Training(后训练)
Post-Training(后训练)是深度学习模型训练流程中的一个重要环节,通常发生在预训练Pre-Training之后。它的目标是通过特定任务的微调或优化,进一步提升模型的性能、适应性和安全性。与预训练相比,后训练通常需要较少的计算资源,但能显著提升模型在特定任务上的表现。这些目标可能包括:
- 任务性能提升:如提高模型在问答、推理等任务上的准确性。
- 对齐社会价值观:确保模型的输出符合伦理和社会规范。
- 用户偏好适应:根据用户反馈调整模型行为。
常见方法
- 监督微调(Supervised Fine-Tuning, SFT):监督微调是后训练中最常用的方法,通过在特定任务的标注数据上进一步训练模型,提升其在该任务上的性能
- 强化学习人类反馈(RLHF):RLHF是一种通过人类反馈优化模型行为的方法,广泛应用于对齐社会价值观和适应用户偏好。
- 提示微调(Prompt Tuning):提示微调是一种轻量级的后训练方法,通过优化提示(Prompt)来调整模型行为,而无需修改模型参数。
拒绝采样
Rejection Sampling(拒绝采样是一种从复杂分布中生成样本的统计学方法。它的核心思想是通过一个简单的、易于采样的分布(称为提议分布)来近似目标分布,并通过接受或拒绝样本来确保最终样本符合目标分布。在深度学习和强化学习(RL)中,拒绝采样常用于从模型的输出分布中筛选高质量的样本,以生成更可靠的训练数据。
拒绝采样的基本思想
拒绝采样的目标是从一个复杂的目标分布 p ( x ) p(x) p(x) 中生成样本。它的步骤如下:
- 选择一个提议分布 q ( x ) q(x) q(x):这个分布应该易于采样,并且与目标分布 p ( x ) p(x) p(x) 尽可能接近。
- 确定一个常数 M M M:使得 M ⋅ q ( x ) M \cdot q(x) M⋅q(x) 始终大于或等于 p ( x ) p(x) p(x)(即 M ⋅ q ( x ) ≥ p ( x ) M \cdot q(x) \geq p(x) M⋅q(x)≥p(x) 对所有 x x x 成立)。
- 生成样本:
- 从 q ( x ) q(x) q(x) 中采样一个候选样本 x x x。
- 计算接受概率 α = p ( x ) M ⋅ q ( x ) \alpha = \frac{p(x)}{M \cdot q(x)} α=M⋅q(x)p(x)。
- 以概率 α \alpha α 接受样本 x x x,否则拒绝。
- 重复采样:直到获得足够数量的样本。
拒绝采样的直观理解
拒绝采样可以类比为“抛硬币”:
- 提议分布 q ( x ) q(x) q(x):类似于一个“筛子”,用于生成候选样本。
- 接受概率 α \alpha α:类似于“硬币的正反面”,决定是否保留样本。
- 常数 M M M:确保“筛子”足够大,能够覆盖目标分布。
通过这种方式,拒绝采样可以生成符合目标分布的样本,即使目标分布本身难以直接采样。
拒绝采样在SFT数据生成中的应用
在深度学习中,拒绝采样常用于从模型的输出分布中筛选高质量的样本,以生成更可靠的训练数据。具体到你的场景:
- 目标分布 p ( x ) p(x) p(x):高质量的SFT数据分布(如符合事实的问答、逻辑清晰的写作等)。
- 提议分布 q ( x ) q(x) q(x):RL模型的输出分布(如DeepSeek-V3的生成结果)。
- 接受概率 α \alpha α:根据样本的质量(如事实准确性、逻辑一致性)决定是否接受。
具体步骤:
- 从RL模型生成候选样本:使用RL模型(如DeepSeek-V3)生成大量候选样本。
- 评估样本质量:通过人工标注或自动化评估(如事实检查、逻辑评分)计算每个样本的接受概率。
- 接受或拒绝样本:根据接受概率保留高质量样本,丢弃低质量样本。
- 生成SFT数据:将接受的样本与现有的监督数据(如写作、事实问答、自我认知数据)结合,形成新的SFT数据集。
- 重新训练模型:在新的SFT数据上微调DeepSeek-V3-Base模型。
核心研究目标
探索如何通过强化学习(RL)直接提升大语言模型(LLM)的推理能力,减少对监督微调(SFT)的依赖,并通过蒸馏技术将大模型的推理能力迁移到小模型。
关键贡献
-
纯强化学习模型 DeepSeek-R1-Zero
- 无需监督微调:直接在基础模型(DeepSeek-V3-Base)上应用强化学习(GRPO算法),模型通过自我进化发展出复杂推理行为(如自我验证、长链思维)。
- 性能表现:在AIME 2024数学竞赛中,Pass@1从15.6%提升至71.0%(多数投票后达86.7%),与OpenAI-o1-0912相当。
- 局限性:输出可读性差、语言混合(如中英文混杂)。
-
改进版模型 DeepSeek-R1
- 冷启动数据:引入少量高质量长链思维(CoT)数据作为初始微调,优化可读性(如结构化标签
<think>
和<answer>
)。 - 多阶段训练:结合两阶段强化学习和两阶段监督微调,最终模型性能与OpenAI-o1-1217相当。
- 关键结果:
- 推理任务:AIME 2024 Pass@1达79.8%,MATH-500达97.3%。
- 编程任务:Codeforces评级2029,超越96.3%人类选手。
- 知识任务:MMLU-Pro得分84.0%,GPQA Diamond达71.5%。
- 冷启动数据:引入少量高质量长链思维(CoT)数据作为初始微调,优化可读性(如结构化标签
-
蒸馏技术
- 小模型性能提升:将DeepSeek-R1生成的80万条推理数据用于微调Qwen和Llama系列小模型,显著提升其推理能力。
- 代表性结果:
- DeepSeek-R1-Distill-Qwen-32B:AIME 2024 Pass@1达72.6%,超越QwQ-32B-Preview。
- DeepSeek-R1-Distill-Llama-70B:在MATH-500和LiveCodeBench上表现接近o1-mini。
方法与技术细节
-
强化学习框架
- GRPO算法:通过组内基线估计替代传统Critic模型,降低训练成本(公式见原文)。
- 奖励设计:
- 准确性奖励:基于规则验证(如数学答案格式、编程测试用例)。
- 格式奖励:强制模型输出结构化标签。
-
冷启动与多阶段训练
- 冷启动数据:人工设计可读性模板(如
<reasoning_process>
和<summary>
),过滤低质量输出。 - 两阶段RL + SFT:
- 第一阶段:冷启动微调后应用推理导向的RL。
- 第二阶段:通过拒绝采样生成SFT数据,结合非推理任务(写作、翻译)微调,再执行多场景RL对齐。
- 冷启动数据:人工设计可读性模板(如
-
蒸馏策略
- 直接SFT蒸馏:使用DeepSeek-R1生成的数据微调小模型,未引入额外RL阶段。
- 效果验证:蒸馏模型性能显著优于纯RL训练的小模型(如Qwen-32B RL训练仅达50%,蒸馏后达72.6%)。
实验结果与讨论
基准测试对比
- DeepSeek-R1 vs. 闭源模型:
- 在MMLU、GPQA等知识任务上接近OpenAI-o1-1217,显著优于Claude-3.5和GPT-4o。
- 在编程任务(LiveCodeBench、Codeforces)和数学竞赛(AIME、CNMO)中表现领先。
失败尝试与洞见
过程奖励模型(PRM)
1. 难以明确定义细粒度的推理步骤
问题核心:
在复杂推理任务(如数学证明或多步骤逻辑推理)中,如何将整体任务分解为明确、可评估的细粒度步骤存在挑战。不同方法可能涉及不同的合理步骤,而缺乏统一标准会导致PRM评估的模糊性。
具体表现:
- 步骤多样性:同一问题可能存在多种解决路径,如何定义“正确”的中间步骤缺乏共识。例如,解决代数问题时,不同步骤顺序可能均合理,但PRM需明确区分哪些步骤对最终结果有效。
- 主观性干扰:某些任务(如开放式问题解答)的步骤划分可能依赖主观判断,难以自动化或标准化。
影响:
PRM依赖明确的步骤定义,若步骤划分模糊,其奖励机制可能无法准确指导模型优化,甚至引入错误偏差。
2. 中间步骤正确性评估困难
问题核心:
即使步骤被定义,如何自动或手动评估每个中间步骤的正确性仍是一个技术瓶颈。
具体表现:
- 自动标注的局限性:
依赖模型自动标注中间步骤的正确性可能导致以下问题:- 模型偏见:若标注模型本身存在训练偏差,其标注结果可能不可靠。
- 错误传播:自动标注的错误会直接影响PRM的奖励信号,导致模型学习到错误模式。
- 手动标注的成本与扩展性:
人工标注虽然准确性较高,但面临:- 高昂成本:大规模标注需要大量人力资源,尤其在复杂任务中。
- 可扩展性差:难以快速适应新任务或动态变化的推理需求。
影响:
评估机制的不完善直接削弱PRM的有效性,导致其难以在大规模应用中保持高效和准确。
3. 奖励黑客与训练复杂性
问题核心:
引入基于模型的PRM后,模型可能通过优化奖励信号而非实际任务目标来“欺骗”奖励机制(即奖励黑客),同时训练流程的复杂性显著增加。
具体表现:
- 奖励黑客(Reward Hacking):
模型可能通过以下方式绕过PRM的意图:- 表面优化:生成符合步骤奖励但实际错误的中间结果(例如,通过重复步骤填充流程,而非真正推进推理)。
- 对抗性策略:利用PRM的评估漏洞生成看似合理但无效的中间步骤。
- 训练资源与流程复杂性:
- 额外训练成本:PRM需独立训练或持续更新,消耗额外计算资源(Gao et al., 2022)。
- 流程耦合性:PRM与主模型的协同训练可能引入依赖冲突,增加调试和优化的难度。
影响:
奖励黑客降低模型的最终性能,而复杂的训练流程则限制PRM在大规模强化学习中的实际应用价值。
Monte Carlo Tree Search (MCTS)
1. 搜索空间的指数级扩展
问题核心:
在棋类游戏中,搜索空间相对明确且有限(如棋盘状态和合法走法),而在语言模型中,token生成的搜索空间呈指数级扩展,导致搜索效率低下。
具体表现:
- 组合爆炸:每个token的选择会衍生出大量可能的后续token序列,搜索树的规模迅速膨胀。
- 局部最优陷阱:为控制搜索空间,通常设置每个节点的最大扩展限制(如只保留top-k候选),但这可能导致模型陷入局部最优解,无法找到全局最优解。
影响:
搜索空间的复杂性限制了MCTS在语言模型中的扩展性,尤其是在需要长序列生成或复杂推理的任务中。
2. 价值模型的训练难度
问题核心:
MCTS依赖价值模型评估每个搜索节点的潜在收益,但在语言模型中,训练一个细粒度的价值模型极具挑战。
具体表现:
- 评估复杂性:语言模型的输出(如文本生成)缺乏明确的评估标准,难以量化每个中间步骤的价值。
- 迭代改进困难:AlphaGo通过逐步优化价值模型提升性能,但在语言模型中,价值模型的训练与生成过程高度耦合,难以独立优化。
- 错误传播:若价值模型评估不准确,会直接影响MCTS的搜索方向,导致生成质量下降。
影响:
价值模型的训练难度限制了MCTS在语言模型中的迭代改进能力,使其难以像在棋类游戏中那样逐步提升性能。
3. 自搜索的性能瓶颈
问题核心:
MCTS的核心优势在于通过自搜索(Self-Search)逐步优化模型性能,但在语言模型中,这一机制难以有效实现。
具体表现:
- 搜索效率低:由于搜索空间的复杂性和价值模型的局限性,自搜索的效率远低于棋类游戏。
- 计算成本高:MCTS需要大量计算资源进行搜索和评估,难以在大规模训练中扩展。
- 生成质量不稳定:自搜索生成的样本可能包含错误或低质量内容,影响后续训练的稳定性。
影响:
自搜索的性能瓶颈限制了MCTS在语言模型中的实际应用价值,尤其是在需要高质量生成和复杂推理的任务中。
局限性与未来方向
-
当前局限
- 通用能力不足:在函数调用、多轮对话等任务上弱于DeepSeek-V3。
- 语言混合:优化多语言场景下的输出一致性。
- 提示敏感性:零样本效果优于少样本,需优化提示工程。
-
未来计划
- 扩展长链思维应用:探索复杂角色扮演、JSON输出等任务。
- 异步评估优化:提升软件工程任务的RL训练效率。
开源与影响
- 开源模型:包括DeepSeek-R1-Zero、DeepSeek-R1及1.5B至70B的蒸馏模型(基于Qwen和Llama)。
- 社区价值:验证纯强化学习在推理任务中的潜力,为小模型高效蒸馏提供新思路。
总结:DeepSeek-R1通过强化学习与蒸馏技术,在推理任务上达到顶尖水平,为LLM的自我进化与能力迁移提供了重要实践参考。
相关文章:

DeepSeek-R1 论文笔记:通过强化学习提升大语言模型的推理能力
论文标题:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 作者团队:DeepSeek-AI 发表时间:2025 前置知识 & 术语 模型蒸馏 语言模型蒸馏的目标是将大型教师模型的知识(如语义理解、上…...
实现Unity shader扭曲效果
实现思路 1、扭曲材质赋于面片 2、抓取当前一帧的图片内容 3、获取屏幕坐标 4、利用屏幕坐标对抓取的图片采样 5、再采样张扰动贴图做扭曲 Shader "Unlit/NewUnlitShader" {Properties {_DistortTex ("扰动贴图 (RGB)", 2D) "bump" {}_Di…...

七星棋牌 6 端 200 子游戏全开源修复版源码(乐豆 + 防沉迷 + 比赛场 + 控制)
七星棋牌源码 是一款运营级的棋牌产品,覆盖 湖南、湖北、山西、江苏、贵州 等 6 大省区,支持 安卓、iOS 双端,并且 全开源。这个版本是 修复优化后的二开版本,新增了 乐豆系统、比赛场模式、防沉迷机制、AI 智能控制 等功能&#…...
C++STL---<limits>
C <limits> 头文件: <limits> 头文件是 C 标准库中用于获取各种数据类型的数值范围、精度等信息的工具。它通过模板类 std::numeric_limits 提供了对基本数据类型(如 int、float、double 等)的详细属性查询功能。通过 std::nume…...

一键安装Mysql部署脚本之Linux在线安装Mysql,脚本化自动化执行服务器部署(附执行脚本下载)
相关链接 一键安装Redis部署脚本之Linux在线安装Redis一键安装Mysql部署脚本之Linux在线安装Mysql一键安装JAVA部署脚本之Linux在线安装JDK一键安装Nginx部署脚本之Linux在线安装NginxNavicat最新版(17)详细安装教程Xshell客户端免费版无需注册XFtp客户端免费版无需注册 前言…...

ES、OAS、ERP、电子政务、企业信息化(高软35)
系列文章目录 ES、OAS、ERP、电子政务、企业信息化 文章目录 系列文章目录前言一、专家系统(ES)二、办公自动化系统(OAS)三、企业资源规划(ERP)四、典型信息系统架构模型1.政府信息化和电子政务2.企业信息…...
文生图开源模型发展史(2014-2025年)
文生图开源模型的发展历程是一段充满技术革新、社区生态繁荣与商业化竞争的多维度演进史。 一、技术萌芽期(2014-2020年) 核心突破 2014年:GAN(生成对抗网络)诞生,首次实现数据驱动式图像生成࿰…...
OA办公系统自动渗透测试过程
目录 一、下载环境源码 二、部署环境 三、测试 XSS漏洞 SQL注入 文件上传漏洞 一、下载环境源码 OA源码打包地址: https://download.csdn.net/download/weixin_43650289/90434502?spm=1001.2014.3001.5503 二、部署环境...
Python标准库【os】5 文件和目录操作2
文章目录 8 文件和目录操作8.7 浏览目录下的内容8.8 查看文件或目录的信息8.9 文件状态修改文件标志位文件权限文件所属用户和组其它 8.10 浏览Windows的驱动器、卷、挂载点8.11 系统配置信息 os模块提供了各种操作系统接口。包括环境变量、进程管理、进程调度、文件操作等方面…...
[代码规范]接口设计规范
一个优雅的接口要如何设计?有哪些设计规范可以遵循? 下面抛砖引玉,分享一些规范。 目录 1、RESTful API 设计最佳实践 2、Shneiderman 的 8 条黄金法则 3、Nielsen 的 10 条启发式规则 1、RESTful API 设计最佳实践 一共18条,参考…...

什么是最终一致性,它对后端系统的意义是什么
最终一致性(Eventual Consistency)是分布式系统中的一种一致性模型。与传统的强一致性模型不同,最终一致性并不要求系统在任何时刻都保持一致,而是保证在足够的时间后,所有节点的数据最终会达到一致的状态。换句话说,系统允许短时间内出现数据的不一致性,但最终会通过某…...
Unity学习笔记之——ugui的性能优化
在Unity中UI优化的核心问题就是重绘和批处理之间的平衡 一、Canvas优化要点 1.优化原因: (1)Unity为了性能优化,会合并Canvas下的所有元素; (2)如果把所有面板放到一个Canvas下,会…...
Python接口自动化中操作Excel文件的技术方法
在Python接口自动化测试中,操作Excel文件是一项常见且关键的技术需求。Excel作为数据存储和数据分析的重要工具,在自动化测试中通常用于存储测试用例、测试数据以及测试结果。通过Python操作Excel,可以大大提高测试的效率和灵活性。以下是一些…...

[Windows] 免费电脑控制手机软件 极限投屏_正式版_3.0.1 (QtScrcpy作者开发)
[Windows] 极限投屏_正式版 链接:https://pan.xunlei.com/s/VOKJf8Z1u5z-cHcTsRpSd89tA1?pwdu5ub# 新增功能(Future): 支持安卓14(Supports Android 14)提高投屏成功率(Improve the success rate of mirror)加快投屏速度(Accelerate screen mirrorin…...

游戏引擎学习第131天
仓库:https://gitee.com/mrxiao_com/2d_game_3 运行游戏并识别我们的小问题 今天的工作重点是对游戏引擎进行架构优化,特别是针对渲染和多线程的部分。目前,我们的目标是让地面块在独立线程上进行渲染,以提高性能。在此过程中,我…...

Visual Studio Code集成MarsCode AI
Visual Studio Code集成MarsCode AI 1、搜索MarsCode AI 安装包 2、点击install安装即可 小编这里已经安装过了 3、登录自己的账号 点击链接,注册账号 https://www.marscode.cn/events/s/i5DRGqqo/ 4、登录后可以自己切换模型...

partner‘127.0.0.1:3200‘ not reached
在SAP虚拟机中,如果LRPSAP 0显示黄色,通常表示服务启动异常或存在配置问题。以下是一些可能的处理方法: 检查主机文件配置 确保主机文件(hosts)中已正确配置SAP服务的域名解析。例如,添加以下内容到hosts文…...

蓝桥备赛(六)- C/C++输入输出
一、OJ题目输入情况汇总 OJ(online judge) 接下来会有例题 , 根据一下题目 , 对这些情况进行分析 1.1 单组测试用例 单在 --> 程序运行一次 , 就处理一组 练习一:计算 (ab)/c 的值 B2009 计算 (ab)/c …...

Flume
Flume安装配置 使用的三台主机名称分别为bigdata1,bigdata2,bigdata3。所使用的安装包名称按自己的修改,安装包可去各大官网上下载 1.解压 将Master节点Flume安装包解压到/opt/module目录下 tar -zxvf /opt/software/apache-flume-1.9.0-bi…...

Java 大视界 -- Java 大数据中的时间序列数据异常检测算法对比与实践(103)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...