HDU1285 确定比赛名次【拓扑排序】
确定比赛名次
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 34572 Accepted Submission(s): 13545
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)
Source
杭电ACM集训队训练赛(VII)
问题链接:HDU1285 确定比赛名次
问题简述:(略)
问题分析:
这是一个拓扑排序的裸题,按照拓扑排序算法计算即可。
这里采用邻接矩阵(二维数组)存储图。一般而言,只有节点规模小的情况下,图才可以使用邻接矩阵表示,不然就太费存储了。
程序说明:
下标为0的存储单元没有使用,浪费了存储,代码的下标转换不用做了,代码相对简洁。
题记:(略)
参考链接:(略)
AC的C++语言程序如下:
/* HDU1285 确定比赛名次 */#include <iostream>
#include <stdio.h>
#include <string.h>using namespace std;const int N = 500 + 1;
int g[N][N];
int degreein[N];
int ans[N];
int n, m;void toposort()
{for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)if(g[i][j])degreein[j]++;// 从节点号小的开始寻找for(int i = 1; i <= n; i++) {int k = 1;while(degreein[k] != 0)k++;ans[i] = k;degreein[k] = -1;// 去除已经找出的节点的入度for(int j = 1; j <= n; j++)if(g[k][j])degreein[j]--;}
}int main()
{while(~scanf("%d%d", &n, &m)) {// 初始化memset(g, 0, sizeof(g));memset(degreein, 0, sizeof(degreein));memset(ans, 0, sizeof(ans));// 读入数据int u, v;for(int i = 1; i <= m; i++) {scanf("%d%d", &u, &v);g[u][v] = 1;}// 拓扑排序toposort();// 输出结果for(int i = 1; i < n; i++)printf("%d ", ans[i]);printf("%d\n", ans[n]);}return 0;
}
HDU1285 确定比赛名次【拓扑排序】相关推荐
- HDU-1285 确定比赛名次 拓扑排序
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1285 确定比赛名次 拓扑排序(邻接矩阵 邻接表
确定比赛名次 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- 图论--拓扑排序--HDU-1285确定比赛名次
Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...
- HDU1285确定比赛名次(拓扑排序+优先队列)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1285 思路 每场比赛的结果我们可以看成一个有向图,从胜利的一方指向失败的一方,在这个有向图的入度为0的 ...
- HDU1285 确定名次 拓扑排序
Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...
- [ACM] hdu 1285 确定比赛 (拓扑排序)
确定比赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 【拓扑排序】确定比赛名次
HDU P1285 确定比赛名次 拓扑排序裸题qwq 注意:入度为一的点删掉之后,它的入度要更新为-1 这个题刷出了我人生中第一次PE 可还行qaq 我搜索PE是输出格式与标准输出不符, 结果发现语言 ...
- HDU 1285 - 确定比赛名次(拓扑排序)
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- [ACM] hdu 1285 确定比赛名次 (拓扑排序)
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
最新文章
- 将redis当做使用LRU算法的缓存来使用
- QT、QTE、qtopia区别
- Silverlight OOB Setup
- 386个Linux发行版本中 你用过Ubuntu吗?
- 吴恩达深度学习1.2笔记_Neural Networks and Deep Learning_神经网络基础
- CCF NOI1076 进制转换
- R_ggplot2地理信息可视化_史上最全(一)
- 数据库索引失效的一些场景
- 通达OA 2011-2013 通杀GETSHELL
- 寒假学习报告 第一周 1.18
- 按周显示的日历和按月显示的日历,你需要吗
- MACHINE LEARNING ----BY HUNGYILEE (love u)
- 前端-css美化网页元素(一)字体样式,文本样式
- 【行业云说直播间】-智慧能源 低碳未来正式上线
- 从Google Play上下载apk
- 斑马打印机(zebraZT410R-203dpi)打印RFID标签流程
- python简易爬虫获取A股上证所有股票历史数据
- C/C++ 文件设备操作之CreateFile、ReadFile和WriteFile
- 查看本机directx版本
- IDEA推送本地代码到新远程git地址
热门文章
- 容器大小_C++复习篇(7)序列式容器vector
- WebSocket之JS发送二进制
- Android ListView常用用法(结合长按、数据库等)
- java xml 面试_Java程序员面试常见的10道XML面试题
- 广州电子厂房净化工程_医药厂房净化车间工程验收,怎么测定风速风量和换气次数?...
- 为什么派生的子类报错不能实例化抽象类_C# 接口与抽象类实例分析
- TensorFlow基础篇(七)——tf.nn.conv2d()
- Tensorflow精进之路(二):两层卷积神经网络模型训练MNIST
- OpenCV探索之路(零):HighGUI——使用imwrite调整保存的图片质量
- Linux下 C++遍历目录文件