首页 > 试题广场 >

比赛名次

[编程题]比赛名次
  • 热度指数:3131 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。

输入描述:
输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。


输出描述:
给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
示例1

输入

4 3
1 2
2 3
4 3

输出

1 2 4 3
头像 乐观的共享单车人最喜欢春天
发表于 2023-09-08 09:06:19
while 1: try: N,M=list(map(int,input().split())) sons=[[] for i in range(N+1)] # 记录每个队的手下败将 dft=[0 for i in range(N+1)] # 展开全文
头像 牛客题解官
发表于 2020-06-05 17:36:07
题解 题目难度:中等 知识点:图、拓扑排序 解题思路:我们在研究题意时,发现在比较排序中存在一个关系,总是两两进行对比的。因此,整个大小关系类似于一个拓扑形状,总会是在一个前提下进行下一步的。因此,整个流程我们可以通过拓扑排序来进行解答。 赢 负 拓扑关系 1 2 2—>1 2 展开全文
头像 Huster水仙
发表于 2023-02-07 15:25:39
拓扑排序(已知为DAG):邻接矩阵+入度,优先队列保证序号小的排前面 #include <iostream> #include<queue> #include<cstring> #include<vector> using namespace std; 展开全文