AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3752. 快速开租建站

中等通过率 72% · 提交 369 · 通过 266
BFS图论拓扑排序模拟

小慕正在负责公司内部一个全新的自动化开站项目。所谓开站,就是在完全空白的环境里,部署一套完整的 IT 服务。每个站点的开站过程由一系列部署任务组成,每个任务的部署时间固定且相等,记为 1。任务之间可能存在关系:如果任务 B 依赖任务 A,那么必须等任务 A 部署完成后,任务 B 才能开始部署。如果某个任务有多个依赖任务,则需要等待所有依赖任务都完成后,该任务才能启动。没有依赖关系的任务可以同时,小慕和团队能做到完全并行、毫无等待。现在,给定一个站点的所有部署任务及其依赖关系,请你帮小慕计算出这个站点最短需要多长时间才能完成开站。

提示:带虚线的词点一下有通俗解释。

输入描述

<div data-page-id="QpfMdpJn2oDJskxdQLkcHpMonAd" data-docx-has-block-data="false"> <div style="white-space-collapse:preserve;" class="ace-line ace-line old-record-id-OZM6dxhhooDnRNx3VndcDgM2nif"> 第一行是任务数 <code>taskNum</code>,第二行是任务的依赖关系数 <code>relationsNum</code> </div> <div style="white-space-collapse:preserve;" class="ace-line ace-line old-record-id-GiCkdVVz9oKyzQxt4micJBzentb"> 接下来 <code>relationsNum</code> 行,每行包含两个 <code>id</code>,描述一个依赖关系,格式为:<code>IDi IDj</code>,表示部署任务 <code>i</code> 部署完成了,部署任务 <code>j</code> 才能部署,<code>IDi</code> 和 <code>IDj</code> 值的范围为:<code>[0, taskNum)</code> </div> <div style="white-space-collapse:preserve;" class="ace-line ace-line old-record-id-KoL6dRcirorA0TxQfLNcxCFgnuh"> 注:输入保证部署任务之间的依赖不会存在环。 </div> </div> <span data-lark-record-data="{"isCut":false,"rootId":"QpfMdpJn2oDJskxdQLkcHpMonAd","parentId":"QpfMdpJn2oDJskxdQLkcHpMonAd","blockIds":[6,7,8],"recordIds":["OZM6dxhhooDnRNx3VndcDgM2nif","GiCkdVVz9oKyzQxt4micJBzentb","KoL6dRcirorA0TxQfLNcxCFgnuh"],"recordMap":{"OZM6dxhhooDnRNx3VndcDgM2nif":{"id":"OZM6dxhhooDnRNx3VndcDgM2nif","snapshot":{"type":"text","parent_id":"QpfMdpJn2oDJskxdQLkcHpMonAd","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":[],"text":{"initialAttributedTexts":{"text":{"0":"第一行是任务数 taskNum,第二行是任务的依赖关系数 relationsNum"},"attribs":{"0":"*0+8*0*1+7*0+e*0*1+c"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]},"nextNum":2}},"align":"","folded":false}},"GiCkdVVz9oKyzQxt4micJBzentb":{"id":"GiCkdVVz9oKyzQxt4micJBzentb","snapshot":{"type":"text","parent_id":"QpfMdpJn2oDJskxdQLkcHpMonAd","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":[],"text":{"apool":{"nextNum":2,"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]}},"initialAttributedTexts":{"attribs":{"0":"*0+4*0*1+c*0+a*0*1+2*0+e*0*1+7*0+8*0*1+1*0+c*0*1+1*0+6*0*1+3*0+3*0*1+3*0+7*0*1+c"},"text":{"0":"接下来 relationsNum 行,每行包含两个 id,描述一个依赖关系,格式为:IDi IDj,表示部署任务 i 部署完成了,部署任务 j 才能部署,IDi 和 IDj 值的范围为:[0, taskNum)"}}},"align":"","folded":false}},"KoL6dRcirorA0TxQfLNcxCFgnuh":{"id":"KoL6dRcirorA0TxQfLNcxCFgnuh","snapshot":{"type":"text","parent_id":"QpfMdpJn2oDJskxdQLkcHpMonAd","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":[],"text":{"initialAttributedTexts":{"text":{"0":"注:输入保证部署任务之间的依赖不会存在环。"},"attribs":{"0":"*0+l"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"]},"nextNum":1}},"align":"","folded":false}},"QpfMdpJn2oDJskxdQLkcHpMonAd":{"id":"QpfMdpJn2oDJskxdQLkcHpMonAd","snapshot":{"type":"page","parent_id":"","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":["doxcnLnDV9qGChiOJVr7JIOE4xh","IX8eddmoOonjybxdTcOcEzqLnUv","EvsmdmZzlowRp1xFhnlcaCcYnhc","G2Fxdu3c0o1s8axoLYSc3PsPnPe","OZM6dxhhooDnRNx3VndcDgM2nif","GiCkdVVz9oKyzQxt4micJBzentb","KoL6dRcirorA0TxQfLNcxCFgnuh","HvP7dcMnXoXiwnxKoRjcTPKtn5v","Jc4cdiXZ6oyLbZxkO0xcXzthnB7","UMgJdSSEpofhbexWdgCcdvqanFe","Wgb8dHBkIotRJ0xvKxEcZAjUnAb","G7bvdE0JEop4Jtxgmm5c3CeSnxe","ZYMZdjoaWoptjFxdL9xcgO51nle","LZvjdLRxaoIiQWxI11rc9f43n8g","T3CfdVOKEoBDGqx7xCYcHgECn0b","I7BOd2kEjoB0nOxneoMcFj5ynic","CzLLdAsDfotDb5xWYYIcsycqnyf","T5HydZnxio3I1ex4Ovoc3eXYnZe","QZmVdXBRRo1r4QxovxocF9xVn5c","GCgUd6K0TozEE8x06J6cZjeXnzc","TKOpdG5t0oVdTExMsAQcVzVyn7d","Ie6bdSMdOowtjmxzXqUc1dUwnur","KiwBd542Uo3iRWxcrDXcRiryneg","RI3qdKsSYo4WZixjmbAcXIV3njh","GkEZdCLr1orOaex5Szycu85ynDe","EmNrdLqbfo1HhmxHmylcKw4FnHd","CeVtdofCLo4DWCxG18ZctLs2ngg","AUUld1HfmopCX1xgPZMcLMDGn4b","doxcnPv13XXgCFMPOGCgtM3UVMf","YVm6dglWXoO8sCxnEBXcjV2lnad","S8Lhd1JZKoQ7syxcfIocd5Urn6g","doxcnUJY3yCzgQuX22ta90OdLof","doxcnjodOW0BmQFf3PjcIWSXPUf","doxcnJczpam5rPEkmlOXfyedw1b","UuQGd1sxnopHBBx1mqJcm23Ansf","V16LdCqyYoaCqBxugtzcrHa7n0c","AAoBdLIwloRgFex4LFScynOAnpv","doxcn08x6KtujgeKG1AfYgmCFNb"],"text":{"apool":{"nextNum":1,"numToAttrib":{"0":["author","7115054903550050305"]}},"initialAttributedTexts":{"attribs":{"0":"*0+i"},"text":{"0":"【BFS】2023Q1-快速开租建站"}}},"align":"","doc_info":{"editors":["7115054903550050305"],"options":["editors","create_time"],"deleted_editors":[]}}}},"payloadMap":{"OZM6dxhhooDnRNx3VndcDgM2nif":{"level":1},"GiCkdVVz9oKyzQxt4micJBzentb":{"level":1},"KoL6dRcirorA0TxQfLNcxCFgnuh":{"level":1}},"extra":{"mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"selection":[{"id":6,"type":"text","selection":{"start":0,"end":41},"recordId":"OZM6dxhhooDnRNx3VndcDgM2nif"},{"id":7,"type":"text","selection":{"start":0,"end":105},"recordId":"GiCkdVVz9oKyzQxt4micJBzentb"},{"id":8,"type":"text","selection":{"start":0,"end":21},"recordId":"KoL6dRcirorA0TxQfLNcxCFgnuh"}],"pasteFlag":"caf23c3a-c3f3-4fee-8bd2-1abe093b4f28"}" data-lark-record-format="docx/record" class="lark-record-clipboard"></span>

输出描述

一个整数,表示一个站点的最短开站时间。

示例

示例 1

输入

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

输出

3

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
任务依赖图与最短开站时间(示例) 任务0 任务1 任务2 任务3 任务4 时间0 时间1 时间2 时间3 任务0,1并行 任务2 任务3,4并行 总时间 = 3
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「快速开租建站」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。