hdu1285
来源:互联网 发布:h3c路由器端口镜像 编辑:程序博客网 时间:2024/05/18 03:29
E - 确定比赛名次
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription
有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<string.h>using namespace std;#define ll long longconst int VM=503;bool G[VM][VM];int deg[VM];int an[VM];int l;void toposort(int n){ int k=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(deg[j]==0) { an[l++]=j; deg[j]--; k=j; break; } } for(int j=1;j<=n;j++) { if(G[k][j]==true) { G[k][j]=false; deg[j]--; } } }}int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=0;i<503;i++) { deg[i]=0; for(int j=0;j<503;j++) { G[i][j]=0; } } while(m--) { int u,v; scanf("%d%d",&u,&v); if(G[u][v]==false) { G[u][v]=true; deg[v]++; } } l=0; toposort(n); for(int i=0;i<n;i++) { if(i!=n-1) printf("%d ",an[i]); else printf("%d\n",an[i]); } }}
0 0
- hdu1285
- HDU1285
- HDU1285
- HDU1285
- hdu1285
- hdu1285
- hdu1285
- hdu1285
- hdu1285拓扑排序
- HDU1285 拓扑排序
- HDU1285-拓扑排序
- hdu1285拓扑排序
- hdu1285-确定比赛名次
- hdu1285确定比赛名次
- hdu1285(拓扑排序)
- hdu1285 确定比赛名次
- hdu1285 拓扑排序
- HDU1285确定比赛名次
- 每日算法_leet049
- spring学习总结(三):IOC & DI 配置 Bean 之配置形式及依赖注入方式
- 权限修饰符
- spring 整合freemaker 模板引擎
- 欢迎使用CSDN-markdown编辑器
- hdu1285
- 【BZOJ 1046】[HAOI2007]上升序列 lis
- http工作原理
- Django模板中常用的标签(tag)
- java I/O流
- java常用类
- Elasticsearch集群启动关闭重启操作
- 装系统之感悟、收获
- 关于页面回显的笔记