问题描述:
某IT系统存在并行计算场景,其独特之处在于计算任务之间存储依赖关系,如图1:有3个Task,Task1,Task2,Task3,表示Task2依赖Task1,Task3依赖Task1,这时候要求计算的顺序是Task1->Task2->Task3. 其中Task2和Task3无先后顺序,为保证结果唯一性,Task2、Task3按升序排序.
例如输入:T2->T1,T3->T1,则输出T1,T2,T3
程序原型:
Java public String caculateDependency(String input)
输入:Task的依赖关系
1.Ti->Tj:表示Ti依赖Tj,Ti,Tj表示具体的Task,i,j=1,2,3,…
2.Tk:表示Tk不依赖其它Task,Tk表示具体的Task,k=1,2,3,…
3.多个关系之间用”,”分开,中间,前后无空格的等特殊字符
输出:Task计算顺序
1.Ti,Tj,表示计算顺序为Ti先于Tj计算,如:图1结果为:T1,T2,T3
注:其中T2和T3无先后顺序,为保证结果唯一性,T2、T3按升序排序,最终交付的函数代码中不要向控制台打印输出任何信息
举例:
输入:T1->T2,T2->T3,T2->T4,T3->T4,T4->T5,T6
输出:T5,T6,T4,T3,T2,T1
输入:T1->T2,T2->T3,T3->T1
输出: Error, circular dependencies 只要存在循环依赖,则报此错误
输入:K1,K2
输出: Error,invalid input 非法输入,为简化输入,输入严格按照输出的要求,不符合均认为非法输入