【拓扑排序】排队-C++
描述今天,学校老师让同学们排成一队,准备带大家出去玩,一共有 n 名同学,排队的时候同学们向老师提了 m 条要求,每一条要求是说同学 x 一定要排在同学 y 之前,老师现在想找到一种排队方式可以满足所有的要求,你能帮帮他吗?输入
第一行两个整数 n,m(1≤n≤10^410
4,1≤m≤10^510
5),表示同学数和要求数;以下 m 行,每行两个整数 x,y,之间用一个空格隔开,表示某个要求是第 x 号同学要排在第 y 号同学之前,所有同学的编号由 1 开始;输入保证有解。输出
输出一行,包括 n 个整数,表示从前往后同学的编号,用空格隔开,如果答案不唯一,输出字典序最小的答案。输入样例 1 2 1
1 2
输出样例 11 2
提示提示:使用优先队列进行拓扑排序
一道拓扑排序模板题,大概掌握了写法就可以a,要注意的是优先队列的写法,参照下面代码(咳咳同机房(?)大佬的代码)
#include<bits/stdc++.h>
using namespace std;const int MAX_N=20000;
const int MAX_M=200000;
int ans[20000],cnt;
struct edge{int v,next;int len;
}E[MAX_M];
int p[MAX_N],eid;
void init(){memset(p,-1,sizeof(p));eid=0;
}
void insert(int u,int v){E[eid].v=v;E[eid].next=p[u];p[u]=eid++;
}
int n,m;
int indegree[MAX_N];
priority_queue<int,vector<int>,greater<int> > q;
void topo(){//queue<int> q;for(int i=1;i<=n;i++){if(indegree[i]==0){q.push(i);}}while(!q.empty()){int now=q.top();cnt++;ans[cnt]=now;q.pop();for(int i=p[now];i!=-1;i=E[i].next){int v=E[i].v;indegree[v]--;if(indegree[v]==0){q.push(v);}}}
}
int main(){init();memset(indegree,0,sizeof(indegree));cin>>n>>m;for(int i=0;i<m;i++){int u,v;cin>>u>>v;insert(u,v);indegree[v]++;}topo();for(int i=1;i<=cnt;i++){cout<<ans[i];if(i<cnt){cout<<" ";}}return 0;
}
ov.
转载于:https://www.cnblogs.com/moyujiang/p/11167795.html
【拓扑排序】排队-C++相关推荐
- 2016百度之星 - 初赛(Astar Round2A)Gym Class(拓扑排序)
Gym Class Accepts: 849 Submissions: 4247 Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65 ...
- hdu-----(4857)逃生(拓扑排序)
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- zcmu-2153(拓扑排序+优先队列)
2153: D.ly的排队问题 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 35 Solved: 13 [Submit][Status][Web ...
- hdu 4857 逃生 拓扑排序
逃生 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4857 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只 ...
- HDU 4857 逃生 【拓扑排序+反向建图+优先队列】
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- 寒假集训日志(二)——最小生成树,拓扑排序,欧拉回路,连通路
今天学的内容挺多的. (一)首先说最小生成树,两种算法: 1.Kruskal算法( 将边排序,然后再选,关键在于检查是否连通,使用并查集) 2.Prim算法(使用点集,有点类似与最短路的算法) 第一题 ...
- HDU 4857 逃生 (反向拓扑排序 容器实现)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 逃生 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- Bailian4084 拓扑排序【拓扑排序】
4084:拓扑排序 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前. 输入 若干行整数,第一行有2个数,分别为顶 ...
- HDU4857 逃生【拓扑排序】
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
最新文章
- Linux系统及编程期末试题,《LINUX系统及其编程》考试试题及答案.doc
- 明天面腾讯,我刷了这71道面试题...
- 无尽包围html5游戏在线玩,小团体激发潜能小游戏突破自我
- 教师节我用Python分析了336个赞美老师的句子,满满的幸福和开心
- EOS cleos --skip-transaction-signatures 跳过签名
- 流行于机器学习竞赛的Boosting,一文讲透足够了
- 未来的 AI 芯片将提升百倍性能!
- Ubuntu下好的PDF阅读器介绍
- 51 nod 1439 互质对(Moblus容斥)
- c语言strTrimed函数用法介绍,c语言对字符串实现高效trim函数
- 2015 ICCV论文《Joint Fine-Tuning in Deep Neural Networks for Facial Expression Recognition》
- java string 最大长度_我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?...
- php使用cookie实现记住用户名和密码实现代码
- JavaScript全部替换 - js replaceAll()
- 音频音乐与计算机的交融pdf,电脑音乐的研和应用.pdf
- as模拟器配置编译的Android,android studio连接雷电模拟器 【AS 模拟器】
- 超文本咖啡壶控制协议
- MATLAB真彩色图像转换为索引图
- 八十年代曾经的十大经典zz
- vue项目实现单/多文件下载和打包压缩下载
热门文章
- Vijos1240 朴素的网络游戏
- idea生成单元测试后运行报错:java.net.ConnectException: Connection refused:
- 迭代式客户端-服务系模型
- http://blog.chinaunix.net/uid-20577907-id-3519578.html
- Iframe 高度自适应的问题
- asp.net面试的概念知识
- 【深入浅出WF】——持久化的过程
- DataGrid中加入CheckBox,并实现单选
- selenium API(二)
- 洛谷——P1311 选择客栈