题目链接

http://acm.hdu.edu.cn/showproblem.php?pid=1285

思路

每场比赛的结果我们可以看成一个有向图,从胜利的一方指向失败的一方,在这个有向图的入度为0的点就是最外层不能确定排名的点,然后我们按照编号从小到大排序,将这些点保存在ans中,然后我们将这些点的出度全部清空,然后再看下一层,这其实就是拓扑排序啦,只不过我们需要保证排名不唯一的情况下先输出编号小的队伍,那么我们可以用优先队列来维护这个拓扑排序,更多详情请看代码哦

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fconst int N = 5e2+10;int n,m;
int du[N];vector<int> E[N];void topsort(){vector<int> ans;priority_queue<int,vector<int>,greater<int> > que;for(int i = 1;i <= n; ++i) if(!du[i]) que.push(i);while(!que.empty()){int t = que.top();que.pop();ans.push_back(t);for(int i = 0,l = E[t].size();i < l; ++i) {int v = E[t][i];du[v]--;if(!du[v]) que.push(v);}}for(int i = 0;i < n; ++i)cout<<ans[i]<<" \n"[i == n-1];
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);while(cin>>n>>m){for(int i = 0;i <= n; ++i) E[i].clear(),du[i] = 0;int u,v;for(int i = 1;i <= m; ++i) {cin>>u>>v;du[v]++;E[u].push_back(v);}topsort();}return 0;
}

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. HDU1285 确定比赛名次【拓扑排序】

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

  4. HDU 4857 拓扑排序 优先队列

    n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得 ...

  5. P3243-[HNOI2015]菜肴制作【拓扑排序,优先队列】

    正题 题目链接:https://www.luogu.com.cn/problem/P3243 题目大意 nnn个数,有mmm个要求形如xxx在yyy的前面,现在要求在i−1i-1i−1尽量靠前的情况下 ...

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

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

  7. hdu1285 拓扑排序+优先队列

    原题地址 这算是我个人AC的第一个拓扑排序题目吧. 题目解读 给出几组比赛的胜负情况.推断最后的排名.依据题意这就是一个明显的拓扑排序问题了. 注意 假设由于可能的排名有多种情况,这时要保证编号小的在 ...

  8. HDU1285 确定名次 拓扑排序

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

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

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

最新文章

  1. 2020上半年收集到的优质AI文章 – 人工智能概述
  2. 【Docker】Linux安装docker-compose
  3. C++中如何区分引用和取地址符号?
  4. jquery的一个代码
  5. .NET 源代码库指南
  6. php 选择 出现列表,php – 如何从加权列表中选择4个唯一项?
  7. [******] java多线程连续打印abc
  8. Redmine 126邮件服务器的配置
  9. mobomarket android,MoboMarket
  10. 基于RV1126平台imx291分析 --- media部件注册 mipi csi phy
  11. 2021 CCF网络推荐会议时间列表
  12. 华为HCNP RS 认证刷题秘笈
  13. ProGuard详解 - Java代码混淆
  14. 苏州软件企业如何办理自产软件产品增值税即征即退
  15. java鲁滨逊漂流记安卓_亲宝听鲁滨逊漂流记全集app下载|鲁滨逊漂流记全集安卓版下载 v1.0.0 - 跑跑车安卓网...
  16. Web应用服务器——Tomcat的介绍、下载安装、环境配置与使用
  17. 解决外接显示屏后CPU占用率过高问题
  18. pwc(普华永道)招聘.net
  19. 为什么计算机无法读取u盘,电脑无法识别读取U盘怎么办?逐一排查解决问题
  20. linux7.5开放端口,Centos/linux开放端口

热门文章

  1. Caffe编写Python layer
  2. ubuntu,win10 释放IP,重新获取IP
  3. vuex 在typescript中的写法
  4. 将后台的返回的格式,根据某个共同的字段分组
  5. 一入python深似海--正則表達式
  6. [枚举] Jzoj P3387 终极武器
  7. iOS视频边下载边播放
  8. Iphone通过ssh进行访问
  9. java 格式化字符串
  10. SonarQube安装步骤 Windows10系统