描述今天,学校老师让同学们排成一队,准备带大家出去玩,一共有 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++相关推荐

  1. 2016百度之星 - 初赛(Astar Round2A)Gym Class(拓扑排序)

    Gym Class  Accepts: 849  Submissions: 4247  Time Limit: 6000/1000 MS (Java/Others)  Memory Limit: 65 ...

  2. hdu-----(4857)逃生(拓扑排序)

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  3. zcmu-2153(拓扑排序+优先队列)

    2153: D.ly的排队问题 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 35  Solved: 13 [Submit][Status][Web ...

  4. hdu 4857 逃生 拓扑排序

    逃生 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4857 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只 ...

  5. HDU 4857 逃生 【拓扑排序+反向建图+优先队列】

    逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  6. 寒假集训日志(二)——最小生成树,拓扑排序,欧拉回路,连通路

    今天学的内容挺多的. (一)首先说最小生成树,两种算法: 1.Kruskal算法( 将边排序,然后再选,关键在于检查是否连通,使用并查集) 2.Prim算法(使用点集,有点类似与最短路的算法) 第一题 ...

  7. HDU 4857 逃生 (反向拓扑排序 容器实现)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 逃生 Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  8. Bailian4084 拓扑排序【拓扑排序】

    4084:拓扑排序 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前. 输入 若干行整数,第一行有2个数,分别为顶 ...

  9. HDU4857 逃生【拓扑排序】

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

最新文章

  1. Linux系统及编程期末试题,《LINUX系统及其编程》考试试题及答案.doc
  2. 明天面腾讯,我刷了这71道面试题...
  3. 无尽包围html5游戏在线玩,小团体激发潜能小游戏突破自我
  4. 教师节我用Python分析了336个赞美老师的句子,满满的幸福和开心
  5. EOS cleos --skip-transaction-signatures 跳过签名
  6. 流行于机器学习竞赛的Boosting,一文讲透足够了
  7. 未来的 AI 芯片将提升百倍性能!
  8. Ubuntu下好的PDF阅读器介绍
  9. 51 nod 1439 互质对(Moblus容斥)
  10. c语言strTrimed函数用法介绍,c语言对字符串实现高效trim函数
  11. 2015 ICCV论文《Joint Fine-Tuning in Deep Neural Networks for Facial Expression Recognition》
  12. java string 最大长度_我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?...
  13. php使用cookie实现记住用户名和密码实现代码
  14. JavaScript全部替换 - js replaceAll()
  15. 音频音乐与计算机的交融pdf,电脑音乐的研和应用.pdf
  16. as模拟器配置编译的Android,android studio连接雷电模拟器 【AS 模拟器】
  17. 超文本咖啡壶控制协议
  18. MATLAB真彩色图像转换为索引图
  19. 八十年代曾经的十大经典zz
  20. vue项目实现单/多文件下载和打包压缩下载

热门文章

  1. Vijos1240 朴素的网络游戏
  2. idea生成单元测试后运行报错:java.net.ConnectException: Connection refused:
  3. 迭代式客户端-服务系模型
  4. http://blog.chinaunix.net/uid-20577907-id-3519578.html
  5. Iframe 高度自适应的问题
  6. asp.net面试的概念知识
  7. 【深入浅出WF】——持久化的过程
  8. DataGrid中加入CheckBox,并实现单选
  9. selenium API(二)
  10. 洛谷——P1311 选择客栈