Algorithm 用图表示的算法问题
假设我有N支足球队。对于每支球队,我都知道可以击败她的对手(对手的数量可以是0)。如果我能“修正”比赛(自己安排),我需要看看我能修正多少队获胜的结果 例如,假设我有5个团队。输入:Algorithm 用图表示的算法问题,algorithm,Algorithm,假设我有N支足球队。对于每支球队,我都知道可以击败她的对手(对手的数量可以是0)。如果我能“修正”比赛(自己安排),我需要看看我能修正多少队获胜的结果 例如,假设我有5个团队。输入: 5 1 5 (team 1 loses from 1 opponent->5) 3 1 4 5(team 2 loses from 3 opponents->1,4,5) 2 1 4(team 3 loses from 2 opponents->1,4) 1 1 1 3 输出:4(我可以修正1,
5
1 5 (team 1 loses from 1 opponent->5)
3 1 4 5(team 2 loses from 3 opponents->1,4,5)
2 1 4(team 3 loses from 2 opponents->1,4)
1 1
1 3
输出:4(我可以修正1,3,4,5的结果)
例如,如果我想要1赢,比赛必须是:
图的可达性结构由图的可及性总结而成。Tarjan给出了一个线性时间算法来标记每个节点及其强连接组件。给定这些标签,您要查找的正是一个强连接的组件,其中没有节点具有到任何其他组件的传出弧。此组件中的每个人都可以成为赢家,其他任何人都不能。如果有两个或两个以上这样的组成部分,那么(a)我想有可能抽签一场锦标赛(b)没有可能的赢家。Bid您为第2队和第3队输入了错误的内容吗?是否应该是
3 1 4 5(第3队输了…
和2 1 4(第2队输了…
?还有,最后两行呢?11
是否意味着“1队输给1队”?另外,5队(或通常为n队)的“括号”是什么意思团队?请删除此问题的答案。我觉得您仍然需要研究基本的图算法。您有一个有向图。对于每个节点,您需要确定是否存在以该节点为根的生成树。您担心的情况可以通过使用BFS或DFS的现有遍历算法解决(广度优先或深度优先搜索)。也要查找术语“回溯”。简单地说,你依次跟踪每条轨迹,直到找到一条适合你的轨迹。如果你用尽了可能,那么就没有办法让该团队成为冠军。非常感谢你的解决方案!