洛谷P3243 [HNOI2015]菜肴制作——拓扑排序
题目:https://www.luogu.org/problemnew/show/P3243
正向按字典序拓扑排序很容易发现是不对的,因为并不是序号小的一定先做;
但若让序号大的尽可能放在后面,则不会有什么问题,因为它不影响它前面的选择;
我们可以建反图,从后往前按序号从大到小排序,倒序输出答案,这样就把序号大的尽量放在后面了。
代码如下:
#include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; priority_queue<int>q; int const maxn=1e5+5; int D,n,m,rd[maxn],head[maxn],ct,ans[maxn],cnt; struct N{int to,next;N(int t=0,int n=0):to(t),next(n) {} }edge[maxn]; void topo() {for(int i=1;i<=n;i++)if(!rd[i])q.push(i);cnt=0;while(q.size()){int x=q.top();q.pop();ans[++cnt]=x;for(int i=head[x];i;i=edge[i].next){int v=edge[i].to;rd[v]--;if(!rd[v])q.push(v);}}if(cnt<n)printf("Impossible!\n");else{for(int i=cnt;i;i--)printf("%d ",ans[i]);printf("\n");} } int main() {scanf("%d",&D);while(D--){memset(rd,0,sizeof rd);memset(head,0,sizeof head);ct=0;scanf("%d%d",&n,&m);for(int i=1,x,y;i<=m;i++){scanf("%d%d",&x,&y);edge[++ct]=N(x,head[y]);head[y]=ct;rd[x]++;}topo();}return 0; }
转载于:https://www.cnblogs.com/Zinn/p/9147515.html
洛谷P3243 [HNOI2015]菜肴制作——拓扑排序相关推荐
- 洛谷P3243 [HNOI2015]菜肴制作(思维+反向拓扑)
传送门 听说原本是紫题 需要先做 i i i 再做 j j j 的限制很自然的让人想到了拓扑排序,然而让编号较小的菜肴尽可能较早输出并不是要求得到最小字典序的答案!! 反面样例可见第三组输入数据,若按 ...
- bzoj 4010: [HNOI2015]菜肴制作 拓扑排序
4010: [HNOI2015]菜肴制作 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- 【luoguP3243】[HNOI2015]菜肴制作--拓扑排序
题目描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1. 由于菜肴 ...
- P3243 [HNOI2015]菜肴制作(拓扑排序)
P3243 [HNOI2015]菜肴制作 题目误导你正着做拓扑排序,然鹅你可以手造数据推翻它.于是就只能倒着做 我们开个优先队列,每次把可填的最大的编号取出来搞,最后倒着输出拓扑序就好辣 #inclu ...
- P3243 [HNOI2015]菜肴制作 (拓扑排序)
[HNOI2015]菜肴制作 - 洛谷 建反图跑字典序最大top_sort即可. /*keep on going and never give up*/ #include<bits/stdc++ ...
- P3243 [HNOI2015]菜肴制作(拓扑 + 优先队列)
题目描述: 知名美食家小 A 被邀请至 ATM 大酒店,为其品评菜肴.ATM 酒店为小 A 准备了 n 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1 到 n 的顺序编号,预估质量最高的菜肴编号为 ...
- 洛谷P3953 逛公园(dp 拓扑排序)
题意 题目链接 Sol 去年考NOIP的时候我好像连最短路计数都不会啊qwq.. 首先不难想到一个思路,\(f[i][j]\)表示到第\(i\)个节点,与最短路之差长度为\(j\)的路径的方案数 首先 ...
- B4010 菜肴制作 拓扑排序(附随机跳题代码)
今天写了一个自己的随机跳题小程序,第一次试发现跳的全是不可做题,但是在周围我一眼看见了这个题,不能说一眼看出来,但是也是比较有思路,所以就做他了! 做得比较顺利,做完之后美滋滋,突然发现样例第三组过不 ...
- 2018.11.02 洛谷P2661 信息传递(拓扑排序+搜索)
传送门 按照题意模拟就行了. 先拓扑排序去掉不在环上面的点. 剩下的都是简单环了. 于是都dfsdfsdfs一遍求出最短的环就行. 代码: #include<bits/stdc++.h> ...
最新文章
- Android—监听器
- x86服务器当虚拟化的存储,X86服务器虚拟化实施方案.doc
- 引用类型String的操作
- python决策树算法_决策树算法及python实现
- 一键安装mysql5.6_一键安装MySQL5.6.43脚本
- 死锁、EAT、页表、单双缓冲区典型题目及解析
- iOS项目开发实战——使用Xcode6设计自己定义控件与图形
- 全面使用禅道做敏捷开发的规范化管理分享
- C语言substr函数用法,自己实现substr函数——C语言
- python中空间的位置怎么放置_python / django,名称空间的根在哪里?
- Hadoop大数据原理与应用
- matlab计算潮流,matlab潮流计算
- 中华石杉互联网Java进阶面试训练营【全网发布ing】
- 【模型理解】KANO模型
- 秒变“女装大佬”!Snapchat推出性别转换滤镜,离线实时渲染(附测评)
- ccf有趣的数java_CCF CSP 有趣的数
- 学习云计算与大数据就业前景好吗?
- 惠而浦将斥资30亿美元收购艾默生电气旗下爱适易;高通和格芯签署一项长期制造协议 | 美通企业日报...
- 单峰数组求峰值,二分思想,LeetCode862
- *1-4 OJ 605 格雷码