题意:

input:

输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示猫猫的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即编号为 P1 的猫猫赢了编号为 P2 的猫猫。

output:

给出一个符合要求的字典序最小的排名。输出时猫猫的编号之间有空格,最后一名后面没有空格!

样例:
输入:

4 3
1 2
2 3
4 3

输出:

1 2 4 3

思路:

分析题意,可知需要用拓扑排序来解题。即对输出的每对猫,A,B,化作一条A到B的路线。通过一个数组rd[] 记录下每个点的入度,在构建图的时候记录下,每个点的入度。在图构建完成的时候,可以遍历找出入度为0的点,因为需要字典序最小的排序,故将这些点放入优先队列。每次从队首取出一个点的时候,将其放到队列中。并以这个点开始,遍历其所能到达的所有点,并将其能到达的所有的点的rd[]值减去1,减去的同时,判断若入度已经为0,则将这些点也加入到优先队列中去。最后等优先队列为空的时候,则图,遍历完成。输出队列中的点即可。

代码:

#include <cstdio>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <queue>
#include <cmath>
using namespace std;queue<int> q1;
priority_queue<int> q2;int N, M, p1, p2;
struct Edge {int to, next;
}e[1000];
int tot;
int head[505];
int rd[505];// to到那个点   从那个点
void add_edge(int t, int f) {rd[t]++;     //入度增加 e[tot].to = t;e[tot].next = head[f];head[f] = tot;tot++;
}void bfs() {while (q2.size()) {int x = -q2.top(); q2.pop();q1.push(x);int y = head[x];while (y != -1) {  //y->toint r1 = e[y].to;rd[r1]--;if (rd[r1] == 0) q2.push(-r1);y = e[y].next;}}
}int main() {ios::sync_with_stdio(0);while (cin >> N >> M) {tot = 0;for (int i = 1; i <= N; i++) {head[i] = -1;rd[i] = 0;}for (int i = 0; i < M; i++) {cin >> p1 >> p2;add_edge(p2, p1);}for (int i = 1; i <= N; i++) {if (rd[i] == 0) q2.push(-i);}bfs();int x = q1.front(); q1.pop();cout << x;while (q1.size()) {x = q1.front(); q1.pop();cout << " " << x;}cout << endl;}return 0;
}

B-猫猫向前冲(拓扑排序相关推荐

  1. 猫猫向前冲(拓扑排序)

    问题描述: 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有的猫猫从前到后依次排名并发放爱吃的小鱼干,TT 的魔法猫将每 ...

  2. [week8]猫猫向前冲——拓扑排序

    文章目录 题意 Input Output 输入样例 输出样例 提示 分析 总结 代码 题意 [

  3. 程序设计思维 B - 猫猫向前冲(拓扑排序、Kahn算法)

    题目 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有的猫 ...

  4. 拓扑排序——猫猫向前冲

    问题分析 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有 ...

  5. 拓扑排序--猫猫向前冲

    问题描述: 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所 ...

  6. week8 B - 猫猫向前冲(拓扑排序)

    一.题目描述 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为 ...

  7. week8_B 猫猫向前冲(拓扑排序)

    题目描述 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有 ...

  8. 猫猫向前冲【排名】【拓扑排序】【图】

    问题描述 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有 ...

  9. Week8 :差分约束,拓扑排序和kahn,强连通图和kosaraju

    文章目录 差分约束 题目-区间选点II 输入输出 解题 代码 拓扑序列-kahn 题目-猫猫向前冲 输入输出 解题 代码 强连通图SCC-kosaraju 题目-班长竞选 输入输出 解题 代码 差分约 ...

最新文章

  1. SQL Server 数据库中的 MD5 和 SHA1加密算法
  2. JavaScript调用Applet的函数
  3. LeetCode 922 Sort Array By Parity II 解题报告
  4. 二维平面内无人机的路径规划——势场法-改进
  5. 台式电脑打不开计算机c盘,电脑电脑C盘打不开怎么办(计算机应用范文)
  6. SVM熟练到精通2:SVM目标函数的dual优化推导
  7. Visual Studio 2010 中的 SharePoint 开发
  8. ISA Server 2004 0x80004005错误
  9. AI+社交,快手商业化落地之道
  10. EF 更新条目时出错。有关详细信息,请参见内部异常。
  11. 【微服务架构】SpringCloud组件和概念介绍
  12. 社会计算经典谈——书籍销量预测
  13. csdn 积分/c币获取方法
  14. Exadata X8发布
  15. 用Word做一个漂亮的网页
  16. 攻防世界的杂项高手题之神奇的Modbus
  17. 中关村企业 大数据_中关村大数据企业产业规模年均增长20%以上
  18. 忻州师范学院2020普通话测试软件,关于2020年普通话测试报名的通知
  19. 关于游戏介绍的HTML网页设计 HTML5期末考核大作业 HTML静态游戏网页作业 web前端开发技术 web课程设计 网页规划与设计
  20. 强化学习系列5:有模型的策略迭代方法

热门文章

  1. 路由模式 - direct
  2. Gatling:HTTP Protocol
  3. 实现在树莓派的GPIO接口上用跳线(短路帽)轻松选择启用或者禁用overlayfs影子系统
  4. 宝塔双php版本,宝塔安装更换PHP版本的方法
  5. STM32 Proteus UCOSII系统简易时钟计时系统-0054
  6. 使用HTK搭建英文大词汇量连续语音识别系统(三)
  7. c语言中程序文件与程序的转换,MCU-C程序基本编程规范(转)
  8. python实现sobel_python通过robert、sobel、Laplace算子实现图像边缘提取详解
  9. 名画30 李成《画选七幅》
  10. 【美联储圣路易斯分行在其研究数据库中追踪四种数字货币价格】