本题是一个典型的有向图拓扑排序问题。
每个微服务看作一个点。若服务 A 依赖服务 B,表示 B 必须先于 A 部署,因此建边:
B→A
同时,A 的入度加 1。
在一个大规模微服务部署平台中,共有 N 个待上线的微服务。每个微服务由一个字符串名称标识。一个微服务只有在它声明的全部前驱微服务都已经部署完成后,才允许开始部署。若服务 A 依赖服务 B,则称 B 是 A 的前驱,依赖关系从 B 指向 A;部署时必须先部署 B,再部署 A。
这些依赖关系形成一张有向图。如果图中存在环,例如 A 依赖 B,B 依赖 C,而 C 又依赖 A,则不存在任何满足条件的部署顺序,此时应输出 Can not deploy。
如果图中不存在环,需要给出一个合法的部署顺序。当多个服务的全部前驱都已经部署、可以同时作为候选时,选择名称字典序最小的服务先部署。字典序按名称字符从左到右比较,字符的 ASCII 码较小者排在前面。重复这一选择过程,直到所有服务都被部署。
约束条件:
N 为整数,满足 1≤N≤1000。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册