Background\text{Background}Background

I’ve got that Luogu Dialy has been \text{I've got that Luogu Dialy has been }I’ve got that Luogu Dialy has been updated\text{updated}updated this morning.\text{ this morning.} this morning.

So I decided to learn Topological Sort.\text{So I decided to learn Topological Sort.}So I decided to learn Topological Sort.

该死的蚊子,TMD把我的手咬得像耕地一样,昨晚皮肤过敏挣扎到很晚才睡。

Description\text{Description}Description

You’ve got N dishes and M rules about their orders.\text{You've got }N\text{ dishes and }M\text{ rules about their orders.}You’ve got N dishes and M rules about their orders.

Each rule seems like &lt;i,j&gt;, it means you must do i first before doing j.\text{Each rule seems like }&lt;i,j&gt;,\text{ it means you must do }i\text{ first before doing }j.Each rule seems like <i,j>, it means you must do i first before doing j.

You perfer dish 1 first, then dish 2,3, and so on.\text{You perfer dish }1\text{ first, then dish 2,3, and so on.}You perfer dish 1 first, then dish 2,3, and so on.

Please find an order to do all these dishes, so that you can have dish 1 as quickly as possible.\text{Please find an order to do all these dishes, so that you can have dish 1 as quickly as possible.}Please find an order to do all these dishes, so that you can have dish 1 as quickly as possible.

If 2 plans’ 1’s order is the same, than you perfer which can have 2 as quickly as\text{If 2 plans' 1's order is the same, than you perfer which can have 2 as quickly as}If 2 plans’ 1’s order is the same, than you perfer which can have 2 as quickly as

possble (And so on).\text{possble (And so on).}possble (And so on).

Solution\text{Solution}Solution

There’s a tips that if you output the lexicographic-ordered plan, you’ll get a WA.\text{There's a tips that if you output the lexicographic-ordered plan, you'll get a WA.}There’s a tips that if you output the lexicographic-ordered plan, you’ll get a WA.

The correct solution is to create the inverse graph, and output upside down.\text{The correct solution is to create the inverse graph, and output upside down.}The correct solution is to create the inverse graph, and output upside down.

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue> using namespace std; #define reg register struct node{
int x,y,next;
}e[100010];
int len=0;
int T;
int n,m,cnt;
int sx,sy;
int first[100010];
int out[100010];
priority_queue<int> q;
int ans[100010]; void ins(int x,int y){
e[++len].x=x;e[len].y=y;++out[y];
e[len].next=first[x];first[x]=len;
}
void Toposort(){
while(!q.empty()) q.pop();
for(reg int i=1;i<=n;++i)
if(!out[i])
q.push(i);
while(!q.empty()){
int x=q.top();q.pop();
ans[cnt--]=x;
for(reg int i=first[x];i;i=e[i].next){
int y=e[i].y;--out[y];
if(!out[y])
q.push(y);
}
}
}
int main(){
scanf("%d",&T);
while(T--){
memset(first,0,sizeof(first));len=0;
memset(out,0,sizeof(out));
scanf("%d%d",&n,&m);
for(reg int i=1;i<=m;++i){
scanf("%d%d",&sx,&sy);
ins(sy,sx);
}
cnt=n;
Toposort();
if(!cnt){
for(reg int i=1;i<=n;++i)
printf("%d ",ans[i]);
puts("");
}
else
printf("Impossible!\n");
}
}

Making Dishes (P3243 [HNOI2015]菜肴制作)的更多相关文章

  1. P3243 [HNOI2015]菜肴制作(拓扑排序)

    P3243 [HNOI2015]菜肴制作 题目误导你正着做拓扑排序,然鹅你可以手造数据推翻它.于是就只能倒着做 我们开个优先队列,每次把可填的最大的编号取出来搞,最后倒着输出拓扑序就好辣 #inclu ...

  2. P3243 [HNOI2015]菜肴制作

    传送门 把时间看成数,菜肴看成位置 考虑一个位置填什么数很麻烦 考虑一个数放在什么位置 一开始我想的是,对于一个限制 $(a,b)$ ,从 $a$ 往 $b$ 连一条边,然后如果有解则所有的限制构成了 ...

  3. 洛谷P3243 [HNOI2015]菜肴制作——拓扑排序

    题目:https://www.luogu.org/problemnew/show/P3243 正向按字典序拓扑排序很容易发现是不对的,因为并不是序号小的一定先做: 但若让序号大的尽可能放在后面,则不会 ...

  4. luogu P3243 [HNOI2015]菜肴制作

    这题一看就知道和拓扑序有关 考虑拓扑排序的时候每次取队列里最小的数进行排序 然后就\(\mathcal{GG}\)了,因为这样只能使字典序最小,而并不能保证题目中要求的每个编号的数要在满足前面数尽量在 ...

  5. 洛谷P3243 [HNOI2015]菜肴制作 拓扑排序+贪心

    正解:拓扑排序 解题报告: 传送门! 首先看到它这个约束就应该要想到拓扑排序辣QwQ 首先想到的应该是用优先队列代替队列,按照节点编号排序 然后也很容易被hack:<5,1> 正解应为5, ...

  6. 洛谷 P3243 [HNOI2015]菜肴制作 题解

    每日一题 day60 打卡 Analysis 这道题一看就感觉是个拓扑排序,但因为按字典序最小的排序会有问题(见第三个样例)主要原因是每次选择有后效性,而从后往前就不会存在这个问题,因为每个子任务都是 ...

  7. 洛谷P3243 [HNOI2015]菜肴制作 (拓扑排序/贪心)

    这道题的贪心思路可真是很难证明啊...... 对于<i,j>的限制(i必须在j之前),容易想到topsort,每次在入度为0的点中选取最小的.但这种正向找是错误的,题目要求的是小的节点尽量 ...

  8. bzoj 4010: [HNOI2015]菜肴制作 拓扑排序

    题目链接: 题目 4010: [HNOI2015]菜肴制作 Time Limit: 5 Sec Memory Limit: 512 MB 问题描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴 ...

  9. BZOJ 4010: [HNOI2015]菜肴制作( 贪心 )

    把图反向,然后按拓扑序贪心地从大到小选, 最后输出.set比priority_queue慢... --------------------------------------------------- ...

随机推荐

  1. Winform中对ZedGraph的曲线标签进行设置,比如去掉标签边框

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  2. hive 元数据解析

    在使用Hive进行开发时,我们往往需要获得一个已存在hive表的建表语句(DDL),然而hive本身并没有提供这样一个工具. 要想还原建表DDL就必须从元数据入手,我们知道,hive的元数据并不存放在 ...

  3. (附源码gitHub下载地址)spring boot -jta-atomikos分布式事务

    应用场景:双数据源,就是某些项目会涉及到两个数据源或者两个以上的数据源,这个多数据源的项目一般是数据同步,也就是把数据从另一个系统中,保存到另一个系统,两边的 数据库又不一样,比如一个Mysql.一个 ...

  4. 初学FPGA图像处理,开发板选择建议

    我用的是ZYNQ7010的开发板,纯粹是入门学习,对于初学者,使用较多的xlinx入门级的开发板一般是zynq7000系列,淘宝上买的较好的是黑金和米联科,我买的就是黑金的,个人觉得教程很少,学习资料 ...

  5. C# 反射基础用法

    1.引用命名空间 using System.Reflection; 2.object[] parameters = { 参数 }; 调用方法的参数数组 3.Type t = Type.GetType( ...

  6. java Swing 界面化查询数据库表

    两天从0基础写的.没有按钮对话框功能,只是简单的实现. 当然代码上有很多需要优化的,基本需要重写哈哈哈.但是我怕以后有需要所以还是存一下好了.<把RS结果集,放vector里面,用vector构 ...

  7. 心动吗?正大光明的免费使用IntelliJ IDEA商业版

    IntelliJ IDEA是广受Java开发者喜爱的工具,其商业版的价格十分昂贵,如下图: 现在有机会免费获取IntelliJ IDEA的正版License,您是否心动呢?我把自己成功申请Licens ...

  8. Ubuntu server16.04安装配置驱动418.87、cuda10.1、cudnn7.6.4.38、anaconda、pytorch超详细解决

    目录 安装GCC 安装NVIDIA驱动 1. 卸载原有驱动(没装跳过) 2. 禁用nouveau 3. 安装NVIDIA显卡驱动 安装CUDA10.1 安装cudnn 安装anaconda 安装ten ...

  9. 死磕 java同步系列之Phaser源码解析

    问题 (1)Phaser是什么? (2)Phaser具有哪些特性? (3)Phaser相对于CyclicBarrier和CountDownLatch的优势? 简介 Phaser,翻译为阶段,它适用于这 ...

  10. layDate——初步使用

    layui系列中layDate的使用教程网址 https://www.layui.com/laydate/ 我这里简单举例: 1.引入js <script type="text/jav ...