2153: D.ly的排队问题

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 35  Solved: 13
[Submit][Status][Web Board]

Description

马上要上体育课了,上体育课之前总归是要排个队的,ly作为班长,怎么排队的问题只能由她来解决,但是马上要上课了,ly又不清楚所有人的身高,她又不好意思问每个人的身高,因为这样会显的自己很不负责,于是她只能通过肉眼观察...那么问题来了,她只能观察出两个人A和B谁高谁矮,但是她没有办法排出一个序列。
ly都已经帮你出了两次主意赢过wjw,那么现在她需要你的帮助,你可以帮她吗?
(ly会告诉你A和B谁高,如果A比B高,会用A>B来表示)

Input

只有一组数据,每个比较结果占一行,读取到文件结束

Output

若输入数据无解,则输出"No Answer!",否则从高到低输出每个人的名字,中间没有分割符
若有多种情况,输出字典序最小的答案

Sample Input

E>A
A>S
S>Y

Sample Output

EASY

解析:基础的拓扑排序+priority_queue,优先队列有一个好处就是可以直接进行我们规定的规则排序。这里有一个坑,输入以EOF结束,所以我们每次输入3个字符的时候要吃掉一个换行符,可以这样写scanf("  %c%c%c  ",&a,&x,&b);在%c后面留一个空格可以吃掉回车,就是因为少吃掉一个\n wrong一发

#include<bits/stdc++.h>
using namespace std;const int maxn=5000+10;
int vis[maxn],vv[maxn];
int ans[maxn];
vector<int> v[maxn];
int main()
{char a,b,x;int cnt=0,t=0;memset(vis,0,sizeof(vis));memset(vv,0,sizeof(vv));//printf("%d",(int)'Z');for(int i=0; i<maxn; i++)v[i].clear();while(~scanf(" %c%c%c ",&a,&x,&b)){if(vv[a]==0){vv[a]=1;cnt++;}if(vv[b]==0){vv[b]=1;cnt++;}if(x=='>'){v[a].push_back(b);vis[b]++;}else{v[b].push_back(a);vis[a]++;}//printf("%d %d\n",vv[a],vv[b]);}priority_queue<int,vector<int>,greater<int> >q;while(!q.empty())q.pop();for(int i=0; i<500; i++){if(vv[i]==1&&vis[i]==0)q.push(i);}t=0;while(!q.empty()){int u=q.top();q.pop();ans[t++]=u;for(int i=0; i<v[u].size(); i++){vis[v[u][i]]--;if(vis[v[u][i]]==0)q.push(v[u][i]);}}if(t!=cnt){printf("No Answer!\n");}else {for(int i=0; i<t; i++)printf("%c",ans[i]);printf("\n");}
} 

zcmu-2153(拓扑排序+优先队列)相关推荐

  1. HDU 4857 拓扑排序 优先队列

    n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得 ...

  2. P3243-[HNOI2015]菜肴制作【拓扑排序,优先队列】

    正题 题目链接:https://www.luogu.com.cn/problem/P3243 题目大意 nnn个数,有mmm个要求形如xxx在yyy的前面,现在要求在i−1i-1i−1尽量靠前的情况下 ...

  3. hdu1285 拓扑排序+优先队列

    原题地址 这算是我个人AC的第一个拓扑排序题目吧. 题目解读 给出几组比赛的胜负情况.推断最后的排名.依据题意这就是一个明显的拓扑排序问题了. 注意 假设由于可能的排名有多种情况,这时要保证编号小的在 ...

  4. HDU1285确定比赛名次(拓扑排序+优先队列)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1285 思路 每场比赛的结果我们可以看成一个有向图,从胜利的一方指向失败的一方,在这个有向图的入度为0的 ...

  5. GYM 100792k King's Rout (拓扑排序+优先队列)

    题目: K. King's Rout time limit per test 4 seconds memory limit per test 512 megabytes input standard ...

  6. HDU Problem 4857 逃生【拓扑排序+优先队列】

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  7. HDU 4857 逃生 【拓扑排序+反向建图+优先队列】

    逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  8. LeetCode 807. 保持城市天际线 / 630. 课程表 III(贪心+优先队列)/ 851. 喧闹和富有(拓扑排序)

    807. 保持城市天际线 2021.12.13 每日一题 题目描述 给你一座由 n x n 个街区组成的城市,每个街区都包含一座立方体建筑.给你一个下标从 0 开始的 n x n 整数矩阵 grid ...

  9. C/C++二级指针概念及应用(有向图的邻接表(拓扑排序)、有向网图的邻接表、树的孩子表示)

    目录 一.概述 例1: 例2: 代码: 二.实例 1.有向图的邻接表(拓扑排序) 2.有向网图的邻接表 3.树的孩子表示 一.概述 二级指针:指向指针的指针.一般需要修改地址的时候会用到二级指针. 注 ...

最新文章

  1. (015)java后台开发之web项目中如何添加jar包和删除jar包
  2. linux 互斥锁销毁_c-销毁锁定的互斥锁时pthread_mutex_destroy的正...
  3. 一出好戏不止是部电影,它也正接近你的生活。
  4. mysql server安装不成功,解决Mysql5.7.17在windows下安装启动时提示不成功问题
  5. 使用 ipmitool 实现远程管理Dell 系列服务器
  6. PowerShell命令测试--whatif参数
  7. php 加tab键,php 生成Tab键或逗号分隔的CSV
  8. 当下大数据体系的4个热点,4个趋势和3个问题
  9. android 编译api,Android逆向利器,直接将apk转换为可二次开发Android工程,提供So hook Api,......
  10. An NVIDIA kernel module ‘nvidia-drm‘ appears to already be loaded in your kernel...
  11. 51单片机之232串口实现-任务要求Fosc为6MHz,定时器T1为工作模式2
  12. unity 遮挡剔除
  13. VS2013+Ceres编译教程 Win7系统
  14. uni-app 省市区选择器
  15. Dialog的高冷用法
  16. 解决android repo (git出错的问题)
  17. java 中的网络编程(Socket、TCP三次握手四次挥手、TCP/UDP/URL)
  18. css复合选择器(后代选择器、子代选择器、并集选择器、链接伪类选择器、:focus选择器)
  19. 全国智能制造(中国制造2025)创新创业大赛华北赛区决赛完美收官
  20. 【XJTUSE 计算机组成与结构笔记】第十三章 精简指令集计算机

热门文章

  1. asp.net 调用带证书的webservice解决办法
  2. android Studio 运行不显示avd 无法运行
  3. (四)JS学习笔记 - 模式 - 观察者模式
  4. C# 发邮件类可发送附件
  5. 服务器意外重启导致storm报错的问题处理
  6. Entityframework:启用延时加载的主意事项(只为强化记忆)
  7. 使用LoadRunner对Web Services进行调用--Add Service Call
  8. [转]游戏中各种性能优化方法(不断更新)
  9. HDOJ HDU 2058 The sum problem ACM 2058 IN HDU
  10. 微软推出Windows XP SP3中文版