确定比赛名次 (拓扑排序)
来源:互联网 发布:淘宝微能量运动旗舰店 编辑:程序博客网 时间:2024/06/06 13:20
确定比赛名次
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 477 Accepted Submission(s): 238Problem Description
有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。
Input
输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。
Output
给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
Sample Input
4 31 22 34 3
Sample Output
1 2 4 3
用优先队列写的
定义跟证明可以自己看算法导论
#include <stdio.h>#include <iostream>#include <algorithm>#include <cmath>#include <vector>#include <string.h>#include <memory>#include <map>#include <queue>using namespace std;const int MAX = 505;int indegree[MAX];priority_queue<int, vector<int>, greater<int>> que;vector<int> team[505];vector<int> ans;int main() { int n, m; int a, b; while (cin >> n >> m) { ans.clear(); while (!que.empty()) que.pop(); for (int i = 0; i < 505; ++i) team[i].clear(); memset(indegree, 0, sizeof(indegree)); for (int i = 0; i < m; ++i) { cin >> a >> b; team[a].push_back(b); indegree[b]++; } for (int i = 1; i <= n; ++i) { if (indegree[i] == 0) que.push(i); } while (!que.empty()) { int cur = que.top(); que.pop(); //cout << cur << endl; ans.push_back(cur); for (int i = 0; i < team[cur].size(); ++i) { indegree[team[cur][i]]--; if (!indegree[team[cur][i]]) que.push(team[cur][i]); } } for (int i = 0; i < n; ++i) { cout << ans[i] << (i == n - 1? "" : " "); } cout << endl; }}
0 0
- hdu 确定比赛名次(拓扑排序)
- 确定比赛名次(拓扑排序)
- HDOJ1285 确定比赛名次(拓扑排序)
- 确定比赛名次 (拓扑排序)
- hdu1285 确定比赛名次(拓扑排序)
- 确定比赛名次(拓扑排序)
- 确定比赛名次(拓扑排序)
- 确定比赛名次 (拓扑排序)
- 确定比赛名次(拓扑排序)
- HDOJ 确定比赛名次 (拓扑排序)
- HDU1285确定比赛名次(拓扑排序)
- hdu 确定比赛名次(拓扑排序)
- 确定比赛名次(拓扑排序)
- hdu1285 确定比赛名次(拓扑排序)
- HDU1285确定比赛名次(拓扑排序)
- hdu1285 确定比赛名次(拓扑排序)
- 确定比赛名次(拓扑排序)
- 确定比赛名次 (拓扑排序)
- hibernate的方法运用
- 566. Reshape the Matrix
- dubbo Filter源码分析
- VGA、DVI、HDMI哪个好?三种视频信号接口有什么区别?
- Linux Shell 之 Shell中的函数调用
- 确定比赛名次 (拓扑排序)
- uses-sdk tools:overrideLibrary uses-sdk:minSdkVersion 1 cannot be smaller than version 9
- 深入分析 ThreadLocal 内存泄漏问题
- JAVA利用FreeMarker生成(导出)Word文档
- Nginx反向代理的简单配置应用
- 不平衡数据下的机器学习方法简介
- java基础6
- 《逆向工程核心原理》<03> DLL注入的3种姿势
- JSP / GSP 标签库-Shiro权限学习1