Making Dishes (P3243 [HNOI2015]菜肴制作)
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 <i,j>, it means you must do i first before doing j.\text{Each rule seems like }<i,j>,\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]菜肴制作)的更多相关文章
- P3243 [HNOI2015]菜肴制作(拓扑排序)
P3243 [HNOI2015]菜肴制作 题目误导你正着做拓扑排序,然鹅你可以手造数据推翻它.于是就只能倒着做 我们开个优先队列,每次把可填的最大的编号取出来搞,最后倒着输出拓扑序就好辣 #inclu ...
- P3243 [HNOI2015]菜肴制作
传送门 把时间看成数,菜肴看成位置 考虑一个位置填什么数很麻烦 考虑一个数放在什么位置 一开始我想的是,对于一个限制 $(a,b)$ ,从 $a$ 往 $b$ 连一条边,然后如果有解则所有的限制构成了 ...
- 洛谷P3243 [HNOI2015]菜肴制作——拓扑排序
题目:https://www.luogu.org/problemnew/show/P3243 正向按字典序拓扑排序很容易发现是不对的,因为并不是序号小的一定先做: 但若让序号大的尽可能放在后面,则不会 ...
- luogu P3243 [HNOI2015]菜肴制作
这题一看就知道和拓扑序有关 考虑拓扑排序的时候每次取队列里最小的数进行排序 然后就\(\mathcal{GG}\)了,因为这样只能使字典序最小,而并不能保证题目中要求的每个编号的数要在满足前面数尽量在 ...
- 洛谷P3243 [HNOI2015]菜肴制作 拓扑排序+贪心
正解:拓扑排序 解题报告: 传送门! 首先看到它这个约束就应该要想到拓扑排序辣QwQ 首先想到的应该是用优先队列代替队列,按照节点编号排序 然后也很容易被hack:<5,1> 正解应为5, ...
- 洛谷 P3243 [HNOI2015]菜肴制作 题解
每日一题 day60 打卡 Analysis 这道题一看就感觉是个拓扑排序,但因为按字典序最小的排序会有问题(见第三个样例)主要原因是每次选择有后效性,而从后往前就不会存在这个问题,因为每个子任务都是 ...
- 洛谷P3243 [HNOI2015]菜肴制作 (拓扑排序/贪心)
这道题的贪心思路可真是很难证明啊...... 对于<i,j>的限制(i必须在j之前),容易想到topsort,每次在入度为0的点中选取最小的.但这种正向找是错误的,题目要求的是小的节点尽量 ...
- bzoj 4010: [HNOI2015]菜肴制作 拓扑排序
题目链接: 题目 4010: [HNOI2015]菜肴制作 Time Limit: 5 Sec Memory Limit: 512 MB 问题描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴 ...
- BZOJ 4010: [HNOI2015]菜肴制作( 贪心 )
把图反向,然后按拓扑序贪心地从大到小选, 最后输出.set比priority_queue慢... --------------------------------------------------- ...
随机推荐
- TCP/IP协议,TCP与平台通信,通讯协议压力测试(python)
最近的项目来了一个需求,要求测试tcp网关通讯协议: 1.液压井盖通过TCP/IP TCP与平台通信: 2.硬件定期发送心跳包(10S)给平台,是平台与硬件保持长连接: 3.每台硬件有一个12字节的唯 ...
- Null is your firend, not a mistake
原文作者: Roman Elizarov 原文地址: Null is your firend, not a mistake 译者:秉心说 Kotlin Island from Wikimedia by ...
- NOIP2009 1.多项式输出
题目: 其中,aixi称为 i 次项,ai 称为 i 次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式: 1. 多项式中自变量为 x,从左到右按照次数递减顺序给出多 ...
- 探索form组件和cookie,session组件
一. 实现注册功能 后端代码: from django.shortcuts import render,HttpResponse,redirect from app01 import models C ...
- new的执行过程
- 这些Mysql常用命令你是否还记得?
前言 记录mysql常用命令操作 基础操作 命令行登录mysql mysql -u用户名 -p用户密码 为表增加创建时间和更新时间 ALTER TABLE order_info_tbl ADD CO ...
- CF #579 (Div. 3) A.Circle of Students
A. Circle of Students time limit per test2 seconds memory limit per test256 megabytes inputstandard ...
- Maven项目运行报错提示找不到加载主类
遇到这个问题花了几小时时间看网上的各种解决方法.试了几种都没用,最后用了这种本办法. 亲测第三条 https://blog.csdn.net/yuliantao/article/details/766 ...
- PyCharm中创建项目时,在所创建的python虚拟环境下的pip失效
在这篇博文里,我简单地叙述了我在使用PyCharm创建一个flask项目时遇到的问题,以及我解决这个问题的过程.其中比较值得注意的点有:①PyCharm创建新项目时的解释器配置②Python虚拟环境的 ...
- 07-简单认识margin
margin 外边距,表示边框到最近盒子的距离. 对于左右两边 <!DOCTYPE html> <html lang="en"> <head> ...