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<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define LL long long
#define REP(i,N)  for(int i=0;i<(N);i++)
#define CLR(A,v)  memset(A,v,sizeof A)
//
#define N 505
int in[N];
vector<int>edge[N];
int main()
{int n,m;while(~RII(n,m)){vector<int >ans;priority_queue<int,vector<int>,greater<int> >q;while(m--){int a,b;RII(a,b);in[b]++;edge[a].push_back(b);}rep(i,1,n){if(in[i]==0)q.push(i);}while(!q.empty()){int u=q.top();q.pop();ans.push_back(u);if(edge[u].size())rep(i,0,edge[u].size()-1){int v=edge[u][i];in[v]--;if(in[v]==0)q.push(v);}}rep(i,0,ans.size()-1){if(i!=0)printf(" ");printf("%d",ans[i]);}cout<<endl;rep(i,1,n)edge[i].clear(),in[i]=0;}
return 0;
}

转载于:https://www.cnblogs.com/bxd123/p/10558102.html

HDU1285 确定名次 拓扑排序相关推荐

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

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

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

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

  3. 【拓扑排序】确定比赛名次

    HDU P1285 确定比赛名次 拓扑排序裸题qwq 注意:入度为一的点删掉之后,它的入度要更新为-1 这个题刷出了我人生中第一次PE 可还行qaq 我搜索PE是输出格式与标准输出不符, 结果发现语言 ...

  4. HDU1285 确定比赛名次【拓扑排序】

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

  5. 图论--拓扑排序--HDU-1285确定比赛名次

    Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...

  6. HDU1285确定比赛名次(拓扑排序+优先队列)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1285 思路 每场比赛的结果我们可以看成一个有向图,从胜利的一方指向失败的一方,在这个有向图的入度为0的 ...

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

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

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

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

  9. hdu1285 拓扑排序(裸)

    确定比赛名次                                                                    Time Limit: 2000/1000 MS ( ...

最新文章

  1. SVG.js 文本绘制整理
  2. springboot-数据访问
  3. 桌面图标设计里的计算机是灰色的,小技巧教您如何将Windows 10上的桌面图标设置中的回收站为灰色!...
  4. 学术科普 | 漫威电影中的智能大脑
  5. kubernets1.52安装文档
  6. KDE桌面没有wifi的解决方案
  7. virtual box和vmware有什么区别吗_真发假发套与普通假发有什么区别吗?
  8. ubuntu 开启ssh
  9. html5介绍 之亮点特性
  10. Python全栈之路Day16
  11. java winform 工具,重拾JAVA之WinForm实战之(六)
  12. JAVA基础编程练习题--50道
  13. 刺客信条3一直显示育碧服务器,刺客信条3免Uplay启动游戏的方法
  14. linux安装水星网卡驱动,centos7.5 安装无线网卡驱动
  15. 国美易卡借助云计算等技术提升金融产品服务
  16. 函数的单调性与曲线的凸凹性
  17. 「程序员值得一看」| 传说中的“全球公认最健康的作息时间表”
  18. 利用Matlab对Excel数据表参数进行频谱分析(FFT)的方法
  19. 微信wifi路由器怎么连接服务器,介绍下微信WIFI路由器怎么设置的方法
  20. STM32F103定时器详解

热门文章

  1. scala 主构造函数_Scala-构造函数
  2. windows下如何启动redis
  3. (1)谷歌2011校园招聘:
  4. Node.js 极简笔记
  5. Nginx+Tomcat windows环境下简单集群搭建
  6. 蚁剑特征性信息修改简单过WAF
  7. 【机器学习】层次聚类
  8. 单机/伪分布式Hadoop2.4.1安装文档
  9. MySQL死锁案例分:先delete,再insert,导致死锁
  10. 文本监控 :oninput onchange onpropertychange 的区别