HDU_1285_拓扑排序(优先队列)
确定比赛名次
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 20395 Accepted Submission(s): 8197
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std; int map[][];
int degree[],ans[];
int n,m; struct cmp1{
bool operator ()(int &a,int &b){
return a>b;//最小值优先
}
}; /*bool operator<(const int &a,const int &b)
{
if(a<b)
return 1;
return 0;
}*/ void topusort()
{
priority_queue<int,vector<int>,cmp1> s;
while(!s.empty())
s.pop();
int cnt=;
for(int i=n; i>=; i--)
{
if(degree[i]==)
{
s.push(i);
}
}
while(!s.empty())
{
int h=s.top();
s.pop();
degree[h]--;
ans[cnt++]=h;
for(int i=n; i>=; i--)
{
if(map[h][i]==)
{
//map[h][i]=0;
degree[i]--;
if(degree[i]==)
s.push(i);
}
}
}
}
int main()
{ while(scanf("%d%d",&n,&m)!=EOF)
{
memset(map,,sizeof(map));
memset(degree,,sizeof(degree));
memset(ans,,sizeof(ans));
for(int i=; i<m; i++)
{
int x,y;
scanf("%d%d",&x,&y);
if(map[x][y]==)
{
map[x][y]=;
degree[y]+=;
}
}
//cout<<degree[3]<<endl;
topusort();
for(int i=;i<n;i++)
{
if(i==n-)
printf("%d\n",ans[i]);
else
printf("%d ",ans[i]);
}
}
return ;
}
再附上第一次做时模拟的代码:
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int sf[][],zt[];
int main()
{
int n,m,p1,p2;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(sf,,sizeof(sf));
memset(zt,,sizeof(zt));
while(m--)
{
scanf("%d%d",&p1,&p2);
if(!sf[p1][p2])
{
sf[p1][p2]=;
zt[p2]++;
}
}
int i,j,k;
for(i=; i<=n; i++)
for(j=; j<=n; j++)
if(zt[j]==)
{
zt[j]--;
if(i==n)
printf("%d\n",j);
else
printf("%d ",j);
for(k=;k<=n;k++)
if(sf[j][k])
zt[k]--;
break;
}
}
return ;
}
HDU_1285_拓扑排序(优先队列)的更多相关文章
- HDU 4857 拓扑排序 优先队列
n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得 ...
- 2016"百度之星" - 初赛(Astar Round2A)HDU 5695 拓扑排序+优先队列
Gym Class Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- HDU-4857-逃生-反向拓扑排序+优先队列
HDU-4857 题意就是做一个符合条件的排序,用到拓扑序列. 我一开始wa了多发,才发现有几个样例过不了,发现1->2->3...的顺序无法保证. 后来就想用并查集强连,还是wa: 后来 ...
- HDU 5638 拓扑排序+优先队列
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5638 题意: 给你一个DAG图,删除k条边,使得能个得到字典序尽可能小的拓扑排序 题解: 把拓扑排序 ...
- POJ 3687 Labeling Balls【拓扑排序 优先队列】
题意:给出n个人,m个轻重关系,求满足给出的轻重关系的并且满足编号小的尽量在前面的序列 因为输入的是a比b重,但是我们要找的是更轻的,所以需要逆向建图 逆向建图参看的这一篇http://blog.cs ...
- HDU 4857 (反向拓扑排序 + 优先队列)
题意:有N个人,M个优先级a,b表示a优先于b.而且每一个人有个编号的优先级.输出顺序. 思路来自:与PKU3687一样 在主要的拓扑排序的基础上又添加了一个要求:编号最小的节点要尽量排在前面:在满足 ...
- HDU1285 确定比赛问题【拓扑排序+优先队列】
题目 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩, ...
- hdu1285确定比赛名次(拓扑排序+优先队列)
传送门 第一道拓扑排序题 每次删除入度为0的点,并输出 这题要求队名小的排前面,所以要用到重载的优先队列 #include<bits/stdc++.h> using namespace s ...
- hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]
传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131 ...
随机推荐
- 关于使用freemarker导出word
java使用FreeMarker导出word 一. 先做一个word模板 二. 将该word文件另存为xml格式(注意是另存为,不是直接改扩展名) 三. 打开xml文件把要 ...
- CentOS6.5 64位站点压力測试工具webbench
在Apache中有自带的ab命令能够測试服务的压力,而nginx没有自带的命令,必需要採用第三方软件来測试.今天就简介一下webbench对nginx的压力測试,压力測试是对系统管理员和运维人员必须的 ...
- 鸟哥的Linux私房菜-----10、学习Bash
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- LeetCode 237. Delete Node in a Linked List (在链表中删除一个点)
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- java7 的final真的有坑啊。
看这里:https://bugs.openjdk.java.net/browse/JDK-7004835 java8u20已经修复了.
- WCF Odata 开放数据协议应用
OData简介 说起 WCF Data Service ,不得不说的是 OData.对于一个标准的 Web 服务,它往往会提供了一些功能,比如说:订货.退货这些,然后使用者通过HTTP协议来使用这些功 ...
- bzoj4668
并查集+最小生成树 首先我们发现这题可以lct维护最小生成树,但是发现如果生成树在之后是不会修改的,那么就想到了并查集,然后就不知道怎么做了... 其实当我们连接两个连通块的时候,两个连通块只能通过这 ...
- MSP430 WDT
MSP430 WDT 有两种模式:1,看门狗 2,定时器 我们这次只用定时器模式,注意有两个决定定时时间的地方:1,时钟源选择 2,间隔时间选择 时钟源可以为:SMCLK 或者 ACLK 时间间隔 ...
- 63.ExtJs事件(自定义事件、on、eventManager)示例
转自:https://blog.csdn.net/leadergg/article/details/5927614?utm_source=blogxgwz5 ExtJs事件(自定义事件.on.even ...