团体程序设计天梯赛 球队食物链 dfs+剪枝

https://pintia.cn/problem-sets/994805046380707840/problems/994805048175869952

L3-015 球队“食物链” (30 分)

某国的足球联赛中有NNN支参赛球队,编号从1至NNN。联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场。

联赛战罢,结果已经尘埃落定。此时,联赛主席突发奇想,希望从中找出一条包含所有球队的“食物链”,来说明联赛的精彩程度。“食物链”为一个1至NNN的排列{ T1T_1T​1​​ T2T_2T​2​​ ⋯\cdots⋯ TNT_NT​N​​ },满足:球队T1T_1T​1​​战胜过球队T2T_2T​2​​,球队T2T_2T​2​​战胜过球队T3T_3T​3​​,⋯\cdots⋯,球队T(N−1)T_{(N-1)}T​(N−1)​​战胜过球队TNT_NT​N​​,球队TNT_NT​N​​战胜过球队T1T_1T​1​​。

现在主席请你从联赛结果中找出“食物链”。若存在多条“食物链”,请找出字典序最小的。

注:排列{ a1a_1a​1​​ a2a_2a​2​​ ⋯\cdots⋯ aNa_Na​N​​}在字典序上小于排列{ b1b_1b​1​​ b2b_2b​2​​ ⋯\cdots⋯ bNb_Nb​N​​ },当且仅当存在整数KKK(1≤K≤N1 \le K \le N1≤K≤N),满足:aK<bKa_K < b_Ka​K​​<b​K​​且对于任意小于KKK的正整数iii,ai=bia_i=b_ia​i​​=b​i​​。

输入格式:

输入第一行给出一个整数NNN(2≤N≤202 \le N \le 202≤N≤20),为参赛球队数。随后NNN行,每行NNN个字符,给出了N×NN\times NN×N的联赛结果表,其中第iii行第jjj列的字符为球队iii在主场对阵球队jjj的比赛结果:W

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值