猫猫向前冲 Week8作业B题
题目:
众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫。
有一天,TT 在 B 站上观看猫猫的比赛。一共有 N 只猫猫,编号依次为1,2,3,…,N进行比赛。比赛结束后,Up 主会为所有的猫猫从前到后依次排名并发放爱吃的小鱼干。不幸的是,此时 TT 的电子设备遭到了宇宙射线的降智打击,一下子都连不上网了,自然也看不到最后的颁奖典礼。
不幸中的万幸,TT 的魔法猫将每场比赛的结果都记录了下来,现在他想编程序确定字典序最小的名次序列,请你帮帮他。
输入:
输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示猫猫的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即编号为 P1 的猫猫赢了编号为 P2 的猫猫。
输出:
给出一个符合要求的排名。输出时猫猫的编号之间有空格,最后一名后面没有空格!
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
样例:
Input:
4 3
1 2
2 3
4 3
Output:
1 2 4 3
思路:
本题考查拓扑排序。
得到输入后我们进行扫描,将入度为0的加入队列。
每次取出队首元素,删掉该元素所对应的边,若连接的点的入度为0,则将连接的点加入队列。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int n,m,tot,du[1010],head[1010];
queue<int> ans;
struct node
{int v;int next;
}e[10100];
struct p
{int a;bool operator <(const p o)const{return a>o.a;}
}tmp;
priority_queue<p> q;
void add_edge(int u,int v)
{e[++tot].v=v;e[tot].next=head[u];head[u]=tot;
}
int main()
{int x,y;while(scanf("%d%d",&n,&m)!=EOF){memset(head,0,sizeof(head));memset(du,0,sizeof(du));tot=0;for(int i=1;i<=m;i++){cin>>x>>y;add_edge(x,y);du[y]++;}for(int i=1;i<=n;i++)if(du[i]==0){tmp.a=i;q.push(tmp);}while(!q.empty()){p u=q.top();q.pop();ans.push(u.a);for(int i=head[u.a];i;i=e[i].next){int v=e[i].v;tmp.a=v;du[v]--;if(du[v]==0)q.push(tmp);}}while(!ans.empty()){if(ans.size()!=1)cout<<ans.front()<<" ";else cout<<ans.front();ans.pop();}cout<<endl;}return 0;
}
猫猫向前冲 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 - 猫猫向前冲
Week8 B - 猫猫向前冲 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结 ...
- 第八周作业——猫猫向前冲
猫猫向前冲 一.题目 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up ...
- 国庆作业 刷题0929
国庆作业 刷题0929 使进度在90-95%截图上传 详情 第二本书 第一本书
- c语言第一次作业程序题pta,c语言第一次作业程序题pta
c语言第一次作业程序题pta 5-1 统计学生平均成绩与及格人数 (15 分)本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于 60 分)的人数.题目保证输入与输出均在整型范围内.输入格 ...
- RT-thread 柿饼UI demo(文本浏览+电子相册) ---- 暨柿饼入门课第一周作业附加题
一.题目要求 完成下图的应用制作,范进中举复制群文件内的范进中举.txt内的内容. 二.实现过程 2.1.整体思路 整体的框架是在一个page中放入三个button控件(负责控制三个显示界面的切换)和 ...
- 速学堂第七章作业编程题答案(自写)
速学堂第七章作业编程题答案 1. 数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出&q ...
- 尚学堂Java第四章作业编码题+个人想法
尚学堂Java第四章作业编码题+个人想法 编码题一: 编码题二: 编码题三: 终于到我想说的地方了 刚开始学习Java,刚开始学会做笔记,觉悟的可能比较晚,但没关系,我会努力的! 由于每次做作业都难理 ...
最新文章
- Nginx访问VM虚拟机CentOS 7系统与本地Windows系统共享目录403
- jquery很好的学习网站
- HDFS底层原理系列讲解之fsimage、editslog
- JAVA 10(多线程)
- 解决笔记本重装问题(VISTA系统改为XP系统)
- css布局:块级元素的居中
- 第10章 bit_vector位向量容器
- 联想战略储备看创投,联想创投All in智能互联网
- 著作权法(1分)18年5月考1分的概率大
- CentOS7下让Asp.Net Core的网站自动运行
- 原码, 反码, 补码
- jsp android 交互,Android中HTTP几种请求和响应的代码实现
- 车路协同发展挑战与影响解析
- 22.支持向量机—高斯核函数
- 基于 FFMPEG 的视频解码(libavcodec ,致敬雷霄骅)
- 现行一级学科和二级学科目录(学位授予和人才培养学科目录)
- 爬虫基础09B—scrapy爬虫
- 绝妙:永不过期的刷Q币技巧 - bh
- 某游戏网站discuz模板
- NodeJs视频教程 NodeJs零基础实战视频教程-来自三人行慕课