确定比赛名次

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 22146    Accepted Submission(s): 8892

Problem 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 3 1 2 2 3 4 3
Sample Output
1 2 4 3
Author
SmallBeer(CML)
#include <bits/stdc++.h>
#define MAXN 1005
using namespace std;
int n, m, indegree[MAXN], que[MAXN];
bool graph[MAXN][MAXN];
void solved() {int ip = 0, k;for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (indegree[j] == 0) {que[ip++] = j;k = j; break;}}indegree[k] = -1;for (int j = 1; j <= n; j++) {if (graph[k][j]) indegree[j]--;}}for (int i = 0; i < ip; i++) {if (i == ip-1) printf("%d\n", que[i]);else printf("%d ", que[i]);}
}
int main() {int a, b;while (scanf("%d%d", &n, &m) != EOF) {memset(graph, false, sizeof(graph));memset(indegree, 0, sizeof(indegree));for (int i = 0; i < m; i++) {scanf("%d%d", &a, &b);if (!graph[a][b]) {graph[a][b] = true;indegree[b]++;}}solved();}return 0;
}

转载于:https://www.cnblogs.com/cniwoq/p/6770859.html

HDU Problem 1285 确定比赛名次【拓扑排序】相关推荐

  1. HDU 1285 确定比赛名次 拓扑排序(邻接矩阵 邻接表

    确定比赛名次 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description ...

  2. [ACM] hdu 1285 确定比赛 (拓扑排序)

    确定比赛 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. HDU-1285 确定比赛名次 拓扑排序

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)           ...

  4. HDU 1285 - 确定比赛名次(拓扑排序)

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. [ACM] hdu 1285 确定比赛名次 (拓扑排序)

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  6. 拓扑排序杭电 1285确定比赛名次

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  7. hdoj 1285 确定比赛名次 【拓扑排序】

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. HDOJ 1285 确定比赛名次(拓扑排序)

    2018-5-23 简单的拓扑排序,我用的是优先队列,按照字典序排序,将入度为零的点放入队列, 则直接按照字典序排序. 需要注意的是:如果有两个重复的数据,则相应的入度值就不应该加一了. #inclu ...

  9. hdu 1285 确定比赛名次

    //拓扑排序裸题,题目要求按编号从小到大输出,要换一种思维去思考 //按照数据结构课本的算法,建立邻接表,用栈实现.初始化先将入度为0的顶点入栈,然后以栈顶顶点为准,先将栈顶顶点出栈输出它的信息,然后 ...

  10. 杭电1285确定比赛名次

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

最新文章

  1. easyui from 缓存问题处理
  2. 《剑指offer》-- 树的子结构、二叉树的镜像、二叉树的深度、平衡二叉树
  3. Some Experience about userControls
  4. Oracle笔记(四)
  5. 万字长文助你上手软件领域驱动设计 DDD
  6. C实现二叉树的先序遍历,中序遍历,后序遍历
  7. MySQL Workbench运行脚本
  8. 基于Gulp的简易前端自动化工程搭建
  9. 将byte数组写进文件,指定buffer size
  10. 计算时间:一个C++运算符重载示例
  11. MFC在一个工程中启动其他工程的exe文件
  12. 日志记录模式(LOGGING 、FORCE LOGGING 、NOLOGGING)
  13. android中截屏快捷键是什么,安卓手机怎么截屏?安卓手机截图快捷键功能图文详解...
  14. ubuntu中文论坛
  15. 组合数 Counting Arrays
  16. 【FaceRevelio】一种用于智能手机的带有前置摄像头的 人脸活跃度检测系统
  17. 计算机excel表格公式教程,Excel2010
  18. Hbase--Scan全局扫描中的过滤器
  19. C语言实现通讯录代码详解(保姆级讲解)
  20. V2V-5G自动驾驶交流微信群

热门文章

  1. 可访问性之于类和对象
  2. 序列最小最优化算法(SMO)
  3. 现代通信原理10.1:带宽无限信道下采用低通滤波器(LPF)接收时的误码性能分析
  4. 现代通信原理A.5:数字基带传输系统误码性能仿真
  5. tomcat source code in eclipse
  6. 做Data Mining,其实大部分时间都花在清洗数据
  7. matlab中关闭mexfunction,mex文件的运行时Matlab自动关闭
  8. 攻防世界 ics-05 write up
  9. Day0205____数据库
  10. FreeBSD--网络配置