Luogu P3243 菜肴制作
Luogu P3243 菜肴制作
神神奇奇的拓扑排序,也就是借这道题学习一下大名鼎鼎的Toposort了……
#include<bits/stdc++.h>
#define N 100010
using namespace std;
int d,n,m,cnt,tot;
int in[N],ans[N],head[N];
struct node {
int nxt,to;
}edge[N];
void addEdge(int u,int v) {
edge[++tot]=(node){head[u],v};
head[u]=tot;
in[v]++;
return;
}
void Init() {
cnt=0;
tot=0;
memset(in,0,sizeof(in));
memset(ans,0,sizeof(ans));
memset(head,0,sizeof(head));
memset(edge,0,sizeof(edge));
return;
}
void Read() {
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++) {
int u,v;
scanf("%d%d",&u,&v);
addEdge(v,u);
}
return;
}
void Topo() {
priority_queue <int> q;
for(int i=1;i<=n;i++) {
if(!in[i]) {
q.push(i);
}
}
while(!q.empty()) {
int t=q.top();
q.pop();
ans[++cnt]=t;
for(int i=head[t];i;i=edge[i].nxt) {
int t=edge[i].to;
in[t]--;
if(!in[t]) {
q.push(t);
}
}
}
return;
}
void Print() {
for(int i=1;i<=n;i++) {
if(in[i]) {
printf("Impossible!\n");
return;
}
}
for(int i=cnt;i>=1;i--) {
printf("%d ",ans[i]);
}
printf("\n");
return;
}
int main()
{
scanf("%d",&d);
for(int i=1;i<=d;i++) {
Init();
Read();
Topo();
Print();
}
return 0;
}
Luogu P3243 菜肴制作的更多相关文章
- [洛谷P3243] 菜肴制作
问题描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1. 由于菜肴 ...
- P3243 [HNOI2015]菜肴制作(拓扑排序)
P3243 [HNOI2015]菜肴制作 题目误导你正着做拓扑排序,然鹅你可以手造数据推翻它.于是就只能倒着做 我们开个优先队列,每次把可填的最大的编号取出来搞,最后倒着输出拓扑序就好辣 #inclu ...
- BZOJ-4010 菜肴制作 贪心+堆+(拓扑图拓扑序)
无意做到...char哥还中途强势插入干我...然后据他所言,看了一会题,一转头,我爆了正解....可怕 4010: [HNOI2015]菜肴制作 Time Limit: 5 Sec Memory L ...
- BZOJ4010: [HNOI2015]菜肴制作
Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号 ...
- 【BZOJ】【4010】【HNOI2015】菜肴制作
拓扑排序 这题是要求N个点的一个拓扑序,且满足以下条件:编号1的位置尽可能靠前,在此基础上编号2的位置尽可能靠前…… 我看到这题的第一感觉:将拓扑排序用的队列改为优先队列,编号越小越早出来. 但是连样 ...
- bzoj 4010: [HNOI2015]菜肴制作 拓扑排序
题目链接: 题目 4010: [HNOI2015]菜肴制作 Time Limit: 5 Sec Memory Limit: 512 MB 问题描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴 ...
- BZOJ 4010 菜肴制作
Description 知名美食家小A被邀请至ATM 大酒店,为其品评菜肴. ATM酒店为小A准备了\(N\)道菜肴,酒店按照为菜肴预估的质量从高到低给予\(1\)到\(N\)的顺序编号,预估质量最高 ...
- BZOJ 4010: [HNOI2015]菜肴制作( 贪心 )
把图反向,然后按拓扑序贪心地从大到小选, 最后输出.set比priority_queue慢... --------------------------------------------------- ...
- 【BZOJ4010】【HNOI2015】菜肴制作(拓扑排序)
[BZOJ4010][HNOI2015]菜肴制作(拓扑排序) 题面 Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为 ...
随机推荐
- K8S - 容器编排工具Kubernetes简介
1 - Kubernetes Kubernetes(简称K8s,用8代替8个字符"ubernete")是Google开源的一个容器编排引擎. 目前最为广泛且流行的容器编排调度系统, ...
- Terence’s Stuff: Why do we do research?
This sound like a question best answered via a survey conducted by a body such as Vitae, an internat ...
- 使用Nethunter(Kali黑客手机)wifite破解无线密码
简介: NetHunter是一个基于Kali Linux为Nexus设备构建的Android渗透测试平台,其中包括一些特殊和独特的功能. NetHunter支持无线802.11注入,一键MANA AP ...
- log4j向指定文件输出日志
一.log4j.properties中的配置 log4j.logger.cache=INFO,ERROR,batchFile log4j.addivity.batchFile=false log4j. ...
- EFCore中的导航属性
使用了这么久的EntityFrameworkCore框架,今天想来就其中的一个部分来做一个知识的梳理,从而使自己对于整个知识有一个更加深入的理解,如果你对EFCore中的实体关系不熟悉你需要有一个知识 ...
- centos 6.10 oracle 19c安装
centos 7以下版本安装oracle 19c 问题较多,centos 以上版本没有任何问题.记录如下. hosts文件,否则图形界面无法启动 127.0.0.1 localhost localho ...
- Python程序设计基本方法图
Python程序设计基本方法图
- Redis--set类型操作命令
集合类型 set redis 的 Set 是 string 类型的无序集合,集合成员是唯一的,即集合中不能出现重复的数据 集合类型 set ——常用命令 sadd /smembers /sismemb ...
- Composer简介
Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 依赖管理 Composer 不是一个包管理器.是的,它涉及 "package ...
- Scratch编程:多彩的舞台(六)
“ 上节课的内容全部掌握了吗?反复练习了没有,编程最好的学习方法就是练习.练习.再练习.一定要记得多动手.多动脑筋哦~~” 01 — 游戏介绍 这是一款简单的小游戏,实现了一个小女孩在多彩的舞台上进行 ...