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 ...
随机推荐
- java ee标准DataSource理解
- qt自己定义搜索框(超简单,带效果图)
1. 什么也不要说.先上效果图: 2. 代码 头文件: #ifndef APPSEARCHLINE_H #define APPSEARCHLINE_H #include <QLineEdit&g ...
- [Vue-rx] Watch Vue.js v-models as Observable with $watchAsObservable and RxJS
You most likely already have data or properties in your template which are controlled by third-party ...
- react面试题(一)
react 生命周期函数 初始化阶段: getDefaultProps:获取实例的默认属性 getInitialState:获取每个实例的初始化状态 componentWillMount:组件即将被装 ...
- JBoss AS6 的服务状态说明
(本文源码版本号为JBoss-AS-Final 6.1.0) JBoss 的服务状态定义在 LifecycleState 类中. 一共同拥有八个状态:INSTANCIATED, PRE_INIT, I ...
- 最简单的基于FFmpeg的移动端样例:Android HelloWorld
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- BeautifulSoup中各种html解析器的比較及使用
Beautiful Soup解析器比較 ·Beautiful Soup支持各种html解析器.包含python自带的标准库.还有其它的很多第三方库模块. 当中一个就是lxml parser,至于lxm ...
- WPF学习笔记:获取ListBox的选中项
有代码有J8: UI <UserControl x:Class="UnitViews.UserListUV" xmlns="http://schemas.micro ...
- linux设备驱动模型之Kobject、kobj_type、kset【转】
本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74838165 版权声明:本文为博主原创文章,转载请注明http://blog.c ...
- [Codeforces Round495B] Sonya and Exhibition
[题目链接] https://codeforces.com/contest/1004/problem/B [算法] 不难发现 , 最优解一定是01010101.... 时间复杂度 : O(N) [代码 ...