B-猫猫向前冲(拓扑排序
题意:
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-猫猫向前冲(拓扑排序相关推荐
- 猫猫向前冲(拓扑排序)
问题描述: 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有的猫猫从前到后依次排名并发放爱吃的小鱼干,TT 的魔法猫将每 ...
- [week8]猫猫向前冲——拓扑排序
文章目录 题意 Input Output 输入样例 输出样例 提示 分析 总结 代码 题意 [
- 程序设计思维 B - 猫猫向前冲(拓扑排序、Kahn算法)
题目 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有的猫 ...
- 拓扑排序——猫猫向前冲
问题分析 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有 ...
- 拓扑排序--猫猫向前冲
问题描述: 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所 ...
- week8 B - 猫猫向前冲(拓扑排序)
一.题目描述 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为 ...
- week8_B 猫猫向前冲(拓扑排序)
题目描述 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有 ...
- 猫猫向前冲【排名】【拓扑排序】【图】
问题描述 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有 ...
- Week8 :差分约束,拓扑排序和kahn,强连通图和kosaraju
文章目录 差分约束 题目-区间选点II 输入输出 解题 代码 拓扑序列-kahn 题目-猫猫向前冲 输入输出 解题 代码 强连通图SCC-kosaraju 题目-班长竞选 输入输出 解题 代码 差分约 ...
最新文章
- SQL Server 数据库中的 MD5 和 SHA1加密算法
- JavaScript调用Applet的函数
- LeetCode 922 Sort Array By Parity II 解题报告
- 二维平面内无人机的路径规划——势场法-改进
- 台式电脑打不开计算机c盘,电脑电脑C盘打不开怎么办(计算机应用范文)
- SVM熟练到精通2:SVM目标函数的dual优化推导
- Visual Studio 2010 中的 SharePoint 开发
- ISA Server 2004 0x80004005错误
- AI+社交,快手商业化落地之道
- EF 更新条目时出错。有关详细信息,请参见内部异常。
- 【微服务架构】SpringCloud组件和概念介绍
- 社会计算经典谈——书籍销量预测
- csdn 积分/c币获取方法
- Exadata X8发布
- 用Word做一个漂亮的网页
- 攻防世界的杂项高手题之神奇的Modbus
- 中关村企业 大数据_中关村大数据企业产业规模年均增长20%以上
- 忻州师范学院2020普通话测试软件,关于2020年普通话测试报名的通知
- 关于游戏介绍的HTML网页设计 HTML5期末考核大作业 HTML静态游戏网页作业 web前端开发技术 web课程设计 网页规划与设计
- 强化学习系列5:有模型的策略迭代方法
热门文章
- 路由模式 - direct
- Gatling:HTTP Protocol
- 实现在树莓派的GPIO接口上用跳线(短路帽)轻松选择启用或者禁用overlayfs影子系统
- 宝塔双php版本,宝塔安装更换PHP版本的方法
- STM32 Proteus UCOSII系统简易时钟计时系统-0054
- 使用HTK搭建英文大词汇量连续语音识别系统(三)
- c语言中程序文件与程序的转换,MCU-C程序基本编程规范(转)
- python实现sobel_python通过robert、sobel、Laplace算子实现图像边缘提取详解
- 名画30 李成《画选七幅》
- 【美联储圣路易斯分行在其研究数据库中追踪四种数字货币价格】