HDU 1285 确定比赛名次
确定比赛名次
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 17915 Accepted Submission(s): 7169
N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排
名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定
排名。
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
#include <bits/stdc++.h>
using namespace std;
const int N(+);
vector<int> g[N];
bool vis[N];
int topo[N], tot;
void dfs(int u){
vis[u]=;
for(int i=; i<g[u].size(); i++){
int &v=g[u][i];
if(vis[v]) continue;
dfs(v);
}
topo[--tot]=u;
}
int main(){
for(int n, m; ~scanf("%d%d", &n, &m);){
for(int i=; i<=n; i++) g[i].clear();
for(int u, v; m--;) scanf("%d%d", &u, &v), g[u].push_back(v);
for(int i=; i<=n; i++) sort(g[i].begin(), g[i].end(), greater<int>());
memset(vis, , sizeof(vis)); tot=n;
for(int i=n; i; i--) if(!vis[i]) dfs(i);
printf("%d", topo[]); for(int i=; i<n; i++) printf(" %d", topo[i]); puts("");
}
}
#include <bits/stdc++.h>
using namespace std;
const int N(+);
vector<int> g[N];
int in[N];
int main(){
for(int n, m; ~scanf("%d%d", &n, &m);){
for(int i=; i<=n; i++) g[i].clear();
memset(in, , sizeof(in));
for(int u, v; m--;) scanf("%d%d", &u, &v), g[u].push_back(v), in[v]++;
for(int i=; i<n; )
for(int u=; u<=n; u++){
if(in[u]==){
if(!i++) printf("%d", u);
else printf(" %d", u);
in[u]=-;
for(int j=; j<g[u].size(); j++){
int &v=g[u][j]; in[v]--;
}
break;
}
}
puts("");
}
}
#include <bits/stdc++.h>
using namespace std;
const int N(+);
vector<int> g[N];
int in[N];
typedef pair<int,int> P;
priority_queue<P, vector<P>, greater<P> > que;
int main(){
for(int n, m; ~scanf("%d%d", &n, &m);){
for(int i=; i<=n; i++) g[i].clear();
memset(in, , sizeof(in));
for(int u, v; m--;) scanf("%d%d", &u, &v), g[u].push_back(v), in[v]++;
for(int i=; i<=n; i++) que.push({in[i], i});
bool first=true;
while(!que.empty()){
P top=que.top(); que.pop(); int &u=top.second;
if(in[u]!=top.first) continue;
if(first) printf("%d", u), first=false;
else printf(" %d", u);
for(int i=; i<g[u].size(); i++){
int &v=g[u][i];
que.push({--in[v], v});
}
}
puts("");
}
}
HDU 1285 确定比赛名次的更多相关文章
- ACM: HDU 1285 确定比赛名次 - 拓扑排序
HDU 1285 确定比赛名次 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u De ...
- HDU.1285 确定比赛名次 (拓扑排序 TopSort)
HDU.1285 确定比赛名次 (拓扑排序 TopSort) 题意分析 裸的拓扑排序 详解请移步 算法学习 拓扑排序(TopSort) 只不过这道的额外要求是,输出字典序最小的那组解.那么解决方案就是 ...
- 正向与反向拓扑排序的区别(hdu 1285 确定比赛名次和hdu 4857 逃生)
确定比赛名次 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- HDU 1285 确定比赛名次(简单拓扑排序)
题目链接: 传送门 确定比赛名次 Time Limit: 1000MS Memory Limit: 65536K Description 有N个比赛队(1 Input 输入有若干组,每组中的第 ...
- hdu 1285 确定比赛名次 (拓扑)
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1285 确定比赛名次【字典序最小的拓扑排序 + 优先队列】
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- [ACM] hdu 1285 确定比赛名次 (拓扑排序)
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU——1285 确定比赛名次
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- hdu 1285 确定比赛名次 (topsort)
确定比赛名次Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
随机推荐
- PHP简单post验证绕过
if($_POST[user] && $_POST[pass]) { $conn = mysql_connect("*******", "****&quo ...
- tp空操作和空控制器处理
TP框架几个重要文件:index.php,ThinkPHP.php,Library/Think/Think.class.php,Library/Think/App.class.php,conversi ...
- Saltstack-初体验
安装 rpm -Uvh http://mirrors.yun-idc.com/epel/6Server/x86_64/epel-release-6-8.noarch.rpm yum install s ...
- ASP.NET Web API路由规则(二)
默认的规则 在ASP.NET MVC4中 global.asax.cs代码中并无注册默认路由规则的代码 代码如下: public class WebApiApplication : System.We ...
- scrapy 代理
说明: 本文参照了官网文档,以及stackoverflow的几个问题 概要: 在scrapy中使用代理,有两种使用方式 使用中间件 直接设置Request类的meta参数 方式一:使用中间件 要进行下 ...
- 1从零开始学习Xamarin.iOS安装篇
安装和配置xamarin.ios 最近.net 开源新闻很火呀,于是想学习xamarin,早1年前就了解过这个东西,但是一直没有时间来学习,我这里装的是MAC上面的版本,废话不多说开始第一步安装. 概 ...
- 关于多个EditText的OnTextChange事件陷入死循环的处理
需求:ListView的Item上面有三个EditText控件,分别为 数量 ,单价,总价,要求输入数量跟单价时候 总价跟着计算变化,当输入总价时候 数量不变,改变单价. 实现:首先肯定想到的是对Ed ...
- Scrum敏捷精要
本文抽取Scrum中的一些重要思想和概念,对Scrum敏捷执行的主题流程进行精要的介绍. 一.基本思想 个体和互动 高于 流程和工具 工作的软件 高于 详尽的文档 客户合作 ...
- JavaScript事件详解
1.事件传播机制:事件冒泡,事件捕获. 2.注册事件处理程序方式: 设置html标签属性为事件处理程序,文档元素的事件处理程序属性,名字由“on”后面跟着事件名组成,例如:onclick,o ...
- BASE64Decoder 编码(sun.jar)
Base64 是网络上最常见的用于传输8Bit 字节代码的编码方式之一,大家可以查看RFC2045 -RFC2049 ,上面有MIME 的详细规范. Base64 要求把每三个8Bit 的字节转换为