華為OD機試-- 服務失效判斷

題目
某系統(tǒng)中有眾多服務,每個服務用字符串(只包含字母和數(shù)字,長度<=10)唯一標識,服務間可能有依賴關系,如A依賴B,則當B故障時導致A也故障。
依賴具有傳遞性,如A依賴B,B依賴C,當C故障時導致B故障,也導致A故障。
給出所有依賴關系,以及當前已知故障服務,要求輸出所有正常服務。
依賴關系:服務1-服務2 表示“服務1”依賴“服務2”
不必考慮輸入異常,用例保證:依賴關系列表、故障列表非空,且依賴關系數(shù),故障服務數(shù)都不會超過3000,服務標識格式正常。
輸入描述:
半角逗號分隔的依賴關系列表(換行)
半角逗號分隔的故障服務列表
輸出描述:
依賴關系列表中提及的所有服務中可以正常工作的服務列表,用半角逗號分隔,按依賴關系列表中出現(xiàn)的次序排序。
特別的,沒有正常節(jié)點輸出單獨一個半角逗號。
示例1? 輸入輸出示例僅供調(diào)試,后臺判題數(shù)據(jù)一般不包含示例
輸入
a1-a2,a5-a6,a2-a3
a5,a2
輸出
a6,a3
說明
a1依賴a2,a2依賴a3,所以a2故障,導致a1不可用,但不影響a3;a5故障不影響a6。
所以可用的是a3、a6,在依賴關系列表中a6先出現(xiàn),所以輸出:a6,a3。
示例2? 輸入輸出示例僅供調(diào)試,后臺判題數(shù)據(jù)一般不包含示例
輸入
a1-a2
a2
輸出
,
說明
a1依賴a2,a2故障導致a1也故障,沒有正常節(jié)點,輸出一個逗號。
Java 實現(xiàn):https://renjie.blog.csdn.net/article/details/130785873
Python實現(xiàn):https://renjie.blog.csdn.net/article/details/128366769
C++ 實現(xiàn):https://renjie.blog.csdn.net/article/details/127272099
JavaScript實現(xiàn):https://renjie.blog.csdn.net/article/details/130785882
C實現(xiàn):https://renjie.blog.csdn.net/article/details/129190260