HDU1285确定比赛名次(拓扑排序+优先队列)
题目链接
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确定比赛名次(拓扑排序+优先队列)相关推荐
- HDU-1285 确定比赛名次 拓扑排序
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1285 确定比赛名次 拓扑排序(邻接矩阵 邻接表
确定比赛名次 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- HDU1285 确定比赛名次【拓扑排序】
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU 4857 拓扑排序 优先队列
n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得 ...
- P3243-[HNOI2015]菜肴制作【拓扑排序,优先队列】
正题 题目链接:https://www.luogu.com.cn/problem/P3243 题目大意 nnn个数,有mmm个要求形如xxx在yyy的前面,现在要求在i−1i-1i−1尽量靠前的情况下 ...
- 图论--拓扑排序--HDU-1285确定比赛名次
Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...
- hdu1285 拓扑排序+优先队列
原题地址 这算是我个人AC的第一个拓扑排序题目吧. 题目解读 给出几组比赛的胜负情况.推断最后的排名.依据题意这就是一个明显的拓扑排序问题了. 注意 假设由于可能的排名有多种情况,这时要保证编号小的在 ...
- HDU1285 确定名次 拓扑排序
Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...
- [ACM] hdu 1285 确定比赛 (拓扑排序)
确定比赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
最新文章
- 2020上半年收集到的优质AI文章 – 人工智能概述
- 【Docker】Linux安装docker-compose
- C++中如何区分引用和取地址符号?
- jquery的一个代码
- .NET 源代码库指南
- php 选择 出现列表,php – 如何从加权列表中选择4个唯一项?
- [******] java多线程连续打印abc
- Redmine 126邮件服务器的配置
- mobomarket android,MoboMarket
- 基于RV1126平台imx291分析 --- media部件注册 mipi csi phy
- 2021 CCF网络推荐会议时间列表
- 华为HCNP RS 认证刷题秘笈
- ProGuard详解 - Java代码混淆
- 苏州软件企业如何办理自产软件产品增值税即征即退
- java鲁滨逊漂流记安卓_亲宝听鲁滨逊漂流记全集app下载|鲁滨逊漂流记全集安卓版下载 v1.0.0 - 跑跑车安卓网...
- Web应用服务器——Tomcat的介绍、下载安装、环境配置与使用
- 解决外接显示屏后CPU占用率过高问题
- pwc(普华永道)招聘.net
- 为什么计算机无法读取u盘,电脑无法识别读取U盘怎么办?逐一排查解决问题
- linux7.5开放端口,Centos/linux开放端口