bzoj 4010: [HNOI2015]菜肴制作 拓扑排序
4010: [HNOI2015]菜肴制作
Time Limit: 20 Sec Memory Limit: 256 MB
题目连接
http://www.lydsy.com/JudgeOnline/problem.php?id=4010
Description
知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴。
Input
第一行是一个正整数D,表示数据组数。
Output
输出文件仅包含 D 行,每行 N 个整数,表示最优的菜肴制作顺序,或
Sample Input
3
5 4
5 4
5 3
4 2
3 2
3 3
1 2
2 3
3 1
5 2
5 2
4 3
Sample Output
1 5 3 4 2
Impossible!
1 5 2 4 3
HINT
题意
题解:
拓扑排序问题,反向建图,由于他要输出一个字典序,注意不是字典序,注意不是字典序,注意不是字典序
序号小的在前面的图,那么我们就用优先队列优化一下就好了
代码:
//qscqesze #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> #include <stack> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define maxn 200001 #define mod 10007 #define eps 1e-9 int Num; char CH[20]; //const int inf=0x7fffffff; //нчоч╢С const int inf=0x3f3f3f3f; /*inline void P(int x) {Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts(""); } */ inline ll read() {ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f; } inline void P(int x) {Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts(""); } //**************************************************************************************int head[maxn]; int top; int d[maxn]; priority_queue<int>q; struct edge {int v,next; }e[maxn]; int cnt; int ans[maxn]; int n,m; void insert(int u,int v) {e[cnt].v=v;e[cnt].next=head[u];head[u]=cnt;cnt++; }void solve(int x) {q.pop();ans[++top]=x;for(int i=head[x];i>=0;i=e[i].next){d[e[i].v]--;if(d[e[i].v]==0)q.push(e[i].v);} }int main() {//freopen("test.txt","r",stdin);int t=read();while(t--){n=read(),m=read();cnt=top=0;memset(head,-1,sizeof(head));memset(d,0,sizeof(d));for(int i=1;i<=m;i++){int u=read(),v=read();insert(v,u);d[u]++;}for(int i=1;i<=n;i++)if(!d[i])q.push(i);while(!q.empty()){solve(q.top());}if(top!=n)printf("Impossible!\n");else{for(int i=n;i;i--)printf("%d ",ans[i]);printf("\n");}}return 0; }
bzoj 4010: [HNOI2015]菜肴制作 拓扑排序相关推荐
- 【luoguP3243】[HNOI2015]菜肴制作--拓扑排序
题目描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1. 由于菜肴 ...
- 洛谷P3243 [HNOI2015]菜肴制作——拓扑排序
题目:https://www.luogu.org/problemnew/show/P3243 正向按字典序拓扑排序很容易发现是不对的,因为并不是序号小的一定先做: 但若让序号大的尽可能放在后面,则不会 ...
- B4010 菜肴制作 拓扑排序(附随机跳题代码)
今天写了一个自己的随机跳题小程序,第一次试发现跳的全是不可做题,但是在周围我一眼看见了这个题,不能说一眼看出来,但是也是比较有思路,所以就做他了! 做得比较顺利,做完之后美滋滋,突然发现样例第三组过不 ...
- 【BZOJ 4010】 [HNOI2015]菜肴制作
4010: [HNOI2015]菜肴制作 Time Limit: 5 Sec Memory Limit: 512 MB Submit: 426 Solved: 242 [Submit][Status] ...
- P3243 [HNOI2015]菜肴制作(拓扑排序)
P3243 [HNOI2015]菜肴制作 题目误导你正着做拓扑排序,然鹅你可以手造数据推翻它.于是就只能倒着做 我们开个优先队列,每次把可填的最大的编号取出来搞,最后倒着输出拓扑序就好辣 #inclu ...
- P3243 [HNOI2015]菜肴制作 (拓扑排序)
[HNOI2015]菜肴制作 - 洛谷 建反图跑字典序最大top_sort即可. /*keep on going and never give up*/ #include<bits/stdc++ ...
- 刷题记录(NC20115 [HNOI2015]菜肴制作)
NC20115 [HNOI2015]菜肴制作 题目链接 关键点: 1.题目要求在给定某些菜品的先后顺序下,并且满足号小的尽量在前的最优顺序 2.对于某些菜品有先后顺序,这就很容易想到拓扑排序,对于有先 ...
- P3243 [HNOI2015]菜肴制作(拓扑 + 优先队列)
题目描述: 知名美食家小 A 被邀请至 ATM 大酒店,为其品评菜肴.ATM 酒店为小 A 准备了 n 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1 到 n 的顺序编号,预估质量最高的菜肴编号为 ...
- 洛谷P3243 [HNOI2015]菜肴制作(思维+反向拓扑)
传送门 听说原本是紫题 需要先做 i i i 再做 j j j 的限制很自然的让人想到了拓扑排序,然而让编号较小的菜肴尽可能较早输出并不是要求得到最小字典序的答案!! 反面样例可见第三组输入数据,若按 ...
最新文章
- 人人都能看懂的LSTM
- 雅特力415开发资料_雅特力在车用电子领域 AT32 MCU应用于ADAS环视系统
- Linux的文本字段统计方法
- 计数信号量的删除与状态查询
- [java] javax.el.PropertyNotFoundException: Property 'id' not found on type bean.Student
- Spring IOC-BeanFactory的继承体系结构
- 两层卷积网络实现手写数字的识别(基于tensorflow)
- Django REST Framework API Guide 07
- 刚刚,四位平民上天了!
- 数据库(表结构和数据) 保存为 *.sql文件
- Linux基础知识笔记
- HttpClient中post请求http、https示例
- 全国计算机二级公共基础知识电子版,全国计算机二级公共基础知识汇总.pdf
- 无悔追梦人 追梦五年
- ★ Android 各类依赖库文件 收藏 ★
- 202011.22深圳湾渐变晚霞-莫安迪原创摄影作品
- py2exe 打包 Pmw Error 3 解决方案
- 东北大学和西南大学计算机,东北大学、东南大学、中南大学、西南大学、西北大学,哪个最好?...
- teradata 查看 表定义_Teradata表类型
- 茅山煤矿轶事(三)--拖拉机
热门文章
- mysql三高讲解(二):2.3 InnoDB索引即数据
- C++安全方向(三)3.4 使用哈希列表验证文件的完整性
- 3500x架构_如何评价超威半导体(AMD)新发布的 锐龙(Ryzen)3500X?
- mysql更新数据库中int 1_Mysql数据库int(1)和tinyint(1)的区别扩展阅读
- jquery查找父窗体id_js/jquery如何获取父窗口的元素?
- 爬取亚马逊评论_如何利用插件抓取亚马逊评论和关键词?
- python执行脚本时的命令行选项_Python 处理脚本的命令行参数(二):使用click
- java 如何去掉 nbsp_java-如何去掉JFrame上的最大化最小化和关闭按钮
- 太吾绘卷第一世攻略_育劳 | 花菜小当家,巧克力蛋糕卷的出道秘籍
- signature php今日头条,今日头条_signature 求解