博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdoj 1285 确定比赛名次 【拓扑排序】
阅读量:6081 次
发布时间:2019-06-20

本文共 1817 字,大约阅读时间需要 6 分钟。

确定比赛名次

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 17142    Accepted Submission(s): 6794
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
 

代码:

 

二维数组

 

#include
int map[510][510],vis[510],in[510],topo[510];int n,m;int toposort(){ int i,j,k=0,next; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(!in[j]) { next=j; break; } } topo[k++]=next; in[next]=-1; for(j=1;j<=n;j++) { if(map[next][j]) { in[j]--; } } } for(i=0;i

"%d\n":"%d ",topo[i]); } } int init() { for(int i=1;i<=n;i++) { in[i]=0; for(int j=1;j<=n;j++) { map[i][j]=0; } } } int main() { int i,a,b; while(scanf("%d%d",&n,&m)!=EOF) { init(); for(i=1;i<=m;i++) { scanf("%d%d",&a,&b); if(map[a][b]) { continue; } map[a][b]=1; in[b]++; } toposort(); } return 0; }

 

邻接矩阵:

#include
#include
#include
#include
using namespace std;int in[510],map[510][510],topo[510];int n,m;priority_queue
,greater
>q;int toposort(){ int i,j,k=0,e; while(!q.empty()) //清空队列。 { q.pop(); } for(i=1;i<=n;i++) { if(!in[i]) //将入度为0的点入队; { q.push(i); } } while(!q.empty()) { e=q.top(); //将队顶元素赋给e; q.pop();//删除队顶元素; topo[k++]=e; //将队顶元素放入topo数组中。 for(i=1;i<=n;i++) { if(map[e][i]) //以e为顶点的边删去。 { in[i]--; if(!in[i]) //假设此时i的入度为0;将其入队 { q.push(i); } } } if(k==n) //全部点都已放入topo数组中; { for(i=0;i

 

转载地址:http://ckkwa.baihongyu.com/

你可能感兴趣的文章
返回上一页几种方法
查看>>
WPF 自定义ComboBox样式,自定义多选控件
查看>>
WPF 自定义MenuItem样式
查看>>
Numerical Geometry of Image
查看>>
1107 Social Clusters
查看>>
Python之路【第十八篇】:模块知识
查看>>
Frogger
查看>>
人机交互评价
查看>>
python发送邮件
查看>>
从页面上灵活增删改查
查看>>
SQL操作简单实现
查看>>
C# 只开启一个程序,如果第二次打开则自动将第一个程序显示到桌面
查看>>
java基础4
查看>>
patch 打补丁,和diff 生成制作补丁
查看>>
ios之UITextView
查看>>
ios之UITableView
查看>>
POJ2524 Ubiquitous Religions(并查集)
查看>>
写一个函数,实现去除字符串空格
查看>>
maven配置文件解析
查看>>
Quick-Cocos2d-x初学者游戏教程(四) --------------- 开发初探(添加背景,标题,动作,按钮)...
查看>>