题目:

众所周知, 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题相关推荐

  1. week8 作业B 猫猫向前冲

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

  2. WEEK8 作业 B - 猫猫向前冲

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

  3. Week8 B - 猫猫向前冲

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

  4. 第八周作业——猫猫向前冲

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

  5. 国庆作业 刷题0929

    国庆作业 刷题0929 使进度在90-95%截图上传 详情 第二本书 第一本书

  6. c语言第一次作业程序题pta,c语言第一次作业程序题pta

    c语言第一次作业程序题pta 5-1 统计学生平均成绩与及格人数 (15 分)本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于 60 分)的人数.题目保证输入与输出均在整型范围内.输入格 ...

  7. RT-thread 柿饼UI demo(文本浏览+电子相册) ---- 暨柿饼入门课第一周作业附加题

    一.题目要求 完成下图的应用制作,范进中举复制群文件内的范进中举.txt内的内容. 二.实现过程 2.1.整体思路 整体的框架是在一个page中放入三个button控件(负责控制三个显示界面的切换)和 ...

  8. 速学堂第七章作业编程题答案(自写)

    速学堂第七章作业编程题答案 1. 数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出&q ...

  9. 尚学堂Java第四章作业编码题+个人想法

    尚学堂Java第四章作业编码题+个人想法 编码题一: 编码题二: 编码题三: 终于到我想说的地方了 刚开始学习Java,刚开始学会做笔记,觉悟的可能比较晚,但没关系,我会努力的! 由于每次做作业都难理 ...

最新文章

  1. Nginx访问VM虚拟机CentOS 7系统与本地Windows系统共享目录403
  2. jquery很好的学习网站
  3. HDFS底层原理系列讲解之fsimage、editslog
  4. JAVA 10(多线程)
  5. 解决笔记本重装问题(VISTA系统改为XP系统)
  6. css布局:块级元素的居中
  7. 第10章 bit_vector位向量容器
  8. 联想战略储备看创投,联想创投All in智能互联网
  9. 著作权法(1分)18年5月考1分的概率大
  10. CentOS7下让Asp.Net Core的网站自动运行
  11. 原码, 反码, 补码
  12. jsp android 交互,Android中HTTP几种请求和响应的代码实现
  13. 车路协同发展挑战与影响解析
  14. 22.支持向量机—高斯核函数
  15. 基于 FFMPEG 的视频解码(libavcodec ,致敬雷霄骅)
  16. 现行一级学科和二级学科目录(学位授予和人才培养学科目录)
  17. 爬虫基础09B—scrapy爬虫
  18. 绝妙:永不过期的刷Q币技巧 - bh
  19. 某游戏网站discuz模板
  20. NodeJs视频教程 NodeJs零基础实战视频教程-来自三人行慕课

热门文章

  1. NBUT 1120 Reimu's Teleport (线段树)
  2. 智能手机出货量持续下跌,5G或能挽救这个行业
  3. 微信内置浏览器清理缓存方法(适用于安卓手机)
  4. 零成本实现自媒体空手变现的些骚操作
  5. javaFX学习之TreeView组件(转载)
  6. cad尺寸标注快捷键_Auto CAD 尺寸标注快捷键
  7. SQL中with recursive用法案例详解
  8. python笔记系列:IP地址处理模块IPy
  9. SpringAOP学习笔记(一)——目标对象和代理对象
  10. Redis分布式锁的实现