算法-程序设计课week8-作业-B - 猫猫向前冲
文章目录
- 题目
- 思路
- 心得
- 代码
题目
众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫。
有一天,TT 在 B 站上观看猫猫的比赛。一共有 N 只猫猫,编号依次为1,2,3,…,N进行比赛。比赛结束后,Up 主会为所有的猫猫从前到后依次排名并发放爱吃的小鱼干。不幸的是,此时 TT 的电子设备遭到了宇宙射线的降智打击,一下子都连不上网了,自然也看不到最后的颁奖典礼。
不幸中的万幸,TT 的魔法猫将每场比赛的结果都记录了下来,现在他想编程序确定字典序最小的名次序列,请你帮帮他。
Input
输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示猫猫的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即编号为 P1 的猫猫赢了编号为 P2 的猫猫。
Output
给出一个符合要求的排名。输出时猫猫的编号之间有空格,最后一名后面没有空格!
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
Sample Input
4 3
1 2
2 3
4 3
Sample Output
1 2 4 3
思路
这是一道拓扑排序的题目
- 构建图。
- 找出入度为0的点,将其放到队列中。
- 这个点去往的所有点度减1,若减去后入度已经为0,则将这些点也加入到队列中去。
最后等队列为空,遍历完成。
心得
- 字典序最小的排序,使用优先队列。
代码
#include <cstring>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
#define LL int
//#define DEBUG
#ifdef DEBUG
#define dprintf printf
#else
#define dprintf /\
/printf
#endif
using namespace std;struct edge {int to, next;
} es[250005];
vector<int> ans;
int head[505];
int degs[505];void add(int x, int y) {static int i = 0;es[++i].to = y;es[i].next = head[x];head[x] = i;degs[y]++;
}void TopologicalSorting(int n, int m) {memset(head, 0, sizeof(head));memset(degs, 0, sizeof(degs));ans.clear();while (m--) {int p1, p2;scanf("%d %d", &p1, &p2);// cin >> p1 >> p2;add(p1, p2);}priority_queue<int, vector<int>, greater<int>> pq;for (int i = 1; i <= n; i++) {if (degs[i] == 0) pq.push(i);}while (!pq.empty()) {int cur = pq.top();pq.pop();ans.push_back(cur);for (int i = head[cur]; i; i = es[i].next) {int v = es[i].to;if (--degs[v] == 0) {pq.push(v);}}}for (int i = 0; i < n; i++) {if (i == 0)printf("%d", ans[0]);elseprintf(" %d", ans[i]);}printf("\n");
}
int main() {int n, m;while (~scanf("%d %d", &n, &m)) {TopologicalSorting(n, m);}
}
算法-程序设计课week8-作业-B - 猫猫向前冲相关推荐
- week8 作业B 猫猫向前冲
猫猫向前冲 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所 ...
- WEEK8 作业 B - 猫猫向前冲
B - 猫猫向前冲 题目描述 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束 ...
- 程序设计思维与实践 Week8 作业 B 猫猫向前冲
题目描述: 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所 ...
- 程序设计思维与实践 Week8 作业 B - 猫猫向前冲
问题描述 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有 ...
- week8 作业B 猫猫向前冲 kahn
思路分析 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有 ...
- Week8 作业——B - 猫猫向前冲
题目 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有的猫 ...
- 程序设计思维 week8 作业B-猫猫向前冲
题目 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有的猫猫从前到后依次排名并发放爱吃的小鱼干.不幸的是,此时 TT 的 ...
- 算法-程序设计课week7-作业-B - TT 的旅行日记
文章目录 题目 思路 路径输出 总的步骤 心得 代码 题目 众所周知,TT 有一只魔法猫. 今天他在 B 站上开启了一次旅行直播,记录他与魔法猫在喵星旅游时的奇遇. TT 从家里出发,准备乘坐猫猫快线 ...
- C++程序设计课上机作业
这是一次学校C++课程上机作业的整理,包含17道题目. 目录
最新文章
- 自对齐(self-aligned)
- 安卓来电归属地_如何做一名突出的iPhone用户?安卓勿进!
- DS博客作业01--日期抽象数据类型设计与实现
- 杂谈——杭州考驾照历程
- mysql数据库参考_干货:MySQL数据库优化参考
- 真相 | 14 岁编程神童谎言坐实,除了谴责我们该反思什么?
- Linq中查询List组合相同值数量大于1
- 使用windows自带的网络命令工具抓包
- python爬网易新闻_爬虫入门:如何用python爬取网易新闻?
- Unbuntu ./btest : cannot execute binary file: Exec format error解决方案(CSAPP)
- R语言——自定义函数求置信区间
- 韦小宝是咱IT人!理由有8!!
- 22.【sinx幂级数求和】
- swap函数中的交换 【指针】 学习笔记
- 【Tools】机器视觉工业相机客户端安装详解教程
- mos管 rl_MOS管放大电路
- Allegro和Alitum Desiger PCB文件互转方法
- m3u8 视频的解密,合并处理 通过java代码
- pjsip 屏幕直播
- 从OJB到Hibernate的迁移
热门文章
- 热搜!华为 30 岁以下员工仅占 28%,网友:35 岁危机呢?
- 广西壮族自治区14个地级市行政区划 (2023)
- 17 扩展IP访问控制列表配置
- 招聘软件测试笔试题及答案,软件测试笔试题及答案 招聘笔试题(一般能力测试50道及答案).doc...
- 数据库索引如何创建,它的优缺点。
- Echarts实战GEO3D和bar3D延迟显示动画发光柱图的练习(未成功)
- STM32L系列flash操作陷阱
- Revit二次开发对于BIM正向设计的帮助
- 排序算法的稳定性 (什么样的排序是不稳定的)
- PCL Getting Start.PCL(Point Cloud Library)入门文档整理