确定比赛名次
来源:互联网 发布:mac版csp ex怎么破解 编辑:程序博客网 时间:2024/05/03 21:18
题目描述
有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队。
输出
给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
样例输入
4 31 22 34 3
样例输出
1 2 4 3
AC代码:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,m;int st[510],dis[510][510],book[510];int toposort(){ int i,j,k; i=0; while(i<n){ for(j=1; j<=n; j++){ if(st[j]==0){ st[j]--; book[i++]=j; for(k=1;k<=n;k++) if(dis[j][k])st[k]--; break; } } } return 1;}int main(){ int a,b,i; while(~scanf("%d %d",&n,&m)){ memset(dis,0,sizeof(dis)); memset(st,0,sizeof(st)); for(i=1;i<=m;i++){ scanf("%d %d",&a,&b); if(dis[a][b]==0){ dis[a][b]=1; st[b]++; } } toposort(); for(i=0;i<n-1;i++) printf("%d ",book[i]); printf("%d\n",book[i]); } return 0;}
0 0
- 确定比赛名次
- 确定比赛名次
- 确定比赛名次
- hdu1285-确定比赛名次
- hdu1285确定比赛名次
- TOJ3651确定比赛名次
- hdu1285 确定比赛名次
- 确定比赛名次
- 确定比赛名次
- A - 确定比赛名次
- 确定比赛名次
- HDU1285确定比赛名次
- 确定比赛名次
- 确定比赛名次
- HDU 确定比赛名次
- 确定比赛名次
- 确定比赛名次
- hduoj1285确定比赛名次
- cocostudio的TextField空件实现光标。
- Microsoft word 2013中遇到的两个问题
- iOS面向对象的三大特征
- 【USACO题库】3.1.4 Shaping Regions形成的区域
- 项目记录33--tolua 框架 回顾架构和重构事件派发LNotice
- 确定比赛名次
- keras 在window下的安装
- php curl 提交 json 字符串
- Android之NFC
- 把读过的书记录下来。很多年以后再看看这个书单,应该很有趣~
- PAT (Advanced Level) Practise1001. A+B Format (20)
- Linux内核学习篇三:中断处理 -- asm.s和traps.c
- bin to npy
- Java中如何遍历Map对象的4种方法