算法提高 卡勒沃夫之弱水路三千(提高型)

Description

锦瑟年华谁与度 莫问情归处 只影向斜阳 剑吼西风 欲把春留驻

天涯芳草无归路 回首花无数 解语自销魂 弱袂萦春 尘缘不相误

在卡勒沃夫充满文学杀伤力的声音中,身处紫荆2号楼202B的四位远近高低各不同的室友纷纷回忆起了各自波澜起伏的过去,并对长在百草园,邻有百花谷的现状表达了各自的见解。

某Q:"…我小学就开窍了…她的父母说我很好,但是…今天又和北林的联系了…"

某X:"…差点就成了,结果到学校了…这个方法放假了我去对我的同桌用!…"

某W:"…"(千言万语不言中,有大量的故事等待考古)

某Z:"…为了来清华…咱们审美观不一样,不会抢…"

卡勒沃夫在这个不朽的夜话中搜集出了某人零散的历任女友资料,为了强迫某人将他出的题目的标程交出,现在卡勒沃夫需要一个能将这些零散信息整合起来的程序。伴随着雄壮委婉动人的音乐,身为程序设计快男(超女)的你降临了!卡勒沃夫正对着您做Orz状并请求着:“神牛啊请施舍给我一段程序把偶米头发~”。。

Input

输入描述:

第一行为一个不超过5的整数T,表示数据的组数。之后每组数据的一行为一个不超过100的整数n。之后n行每行有两个用单个空格隔开的字符串(每个字符串只有英文大小写字母,长度不超过10),为两位mm的名字。每行第一个mm先于第二个mm成为某人的女友。

在这里我们假装诅咒某人不会同时被两个或两个以上mm泡,某个mm抛弃了某人后不会再吃回头草,同时卡勒沃夫深邃的洞察力使得他收集到了充足的信息以确定某人女友的先后顺序。

在小数据组中出现的人物不超过13个

输入样例:
2
2
RY Unknown
YSZ RY
3
tomorrow yestoday
tomorrow today
today yestoday

Output

输出描述:

输出T行,每行对应一组数据,并按照mm们从先到后成为某人女友的顺序输出她们的名字,各个名字间用一个空格隔开。

输出样例:
YSZ RY Unknown
tomorrow today yestoday

解析

此题中说了mm们不吃回头草,因此可将此看作是有向无环图,因此可用拓扑排序输出顺序。可参考介绍拓扑排序的博客:拓扑排序
此题中说了此人不会同时被两人以上mm泡,因此每次入读为1的节点只有一个,因此可只用一个变量存起来,若有多个可考虑用队列queue按顺序输出。
要注意的是输出时要严格按照规定的格式,每行末尾不要有空格!

源码

#include <iostream>
#include <cstring>
#include <fstream>
#include <vector>
#include <map> using namespace std;int main()
{//freopen("input/threethousand.txt","r",stdin);int t;map<string,vector<string> > table;  //邻接表 map<string,int> isExist;  //判断节点是否已经存在 map<string,int> in; //存储入度string isZero;  //存储入度为0的顶点,根据题意每次只会有一个入读为0的顶点 scanf("%d",&t); while(t--){int n;table.clear();in.clear();isExist.clear(); string s1,s2;scanf("%d",&n);while(n--){cin>>s1>>s2;if(!isExist.count(s1)){in[s1]=0;isExist[s1]++;}if(!isExist.count(s2)){in[s2]=0;isExist[s2]++; }table[s1].push_back(s2);in[s2]++;}for(map<string,int>::iterator it=in.begin();it!=in.end();it++){if(it->second==0){isZero=it->first;cout<<isZero<<" ";in.erase(it);break; }} while(!table.empty()){string temp=isZero;for(int i=0;i<table[temp].size();i++){in[table[temp][i]]--;if(in[table[temp][i]]==0){isZero=table[temp][i];cout<<isZero;}}in.erase(isZero);table.erase(temp);if(!table.empty()) cout<<" "; }if(t!=0) cout<<endl;}return 0;
}

蓝桥杯 算法提高 卡勒沃夫之弱水路三千(提高型)相关推荐

  1. 蓝桥杯 ADV-14 算法提高 卡勒沃夫之弱水路三千(提高型)

    问题描述 锦瑟年华谁与度 莫问情归处 只影向斜阳 剑吼西风 欲把春留驻 天涯芳草无归路 回首花无数 解语自销魂 弱袂萦春 尘缘不相误 ...... 在卡勒沃夫充满文学杀伤力的声音中,身处紫荆2号楼20 ...

  2. JakeLin-[蓝桥杯]卡勒沃夫之弱水路三千(提高型)-拓扑排序-题解

    题目描述 锦瑟年华谁与度  莫问情归处  只影向斜阳  剑吼西风  欲把春留驻  天涯芳草无归路  回首花无数  解语自销魂  弱袂萦春  尘缘不相误  ......  在卡勒沃夫充满文学杀伤力的声音 ...

  3. [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  4. [蓝桥杯][算法提高VIP]夺宝奇兵-dp

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  5. JAVA 蓝桥杯 算法提高 阮小二买彩票

    JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...

  6. [蓝桥杯][算法提高VIP]阮小二买彩票

    [蓝桥杯][算法提高VIP]阮小二买彩票 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察下 ...

  7. 【蓝桥杯算法提高VIP-开灯游戏(两种超易理懂解法:暴力/位操作(切换位))(纯正C语言代码)】

    蓝桥杯算法提高VIP-开灯游戏 题目描述 有9盏灯与9个开关,编号都是1~9. 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的). 具体如下: 第一个开关控制第二, ...

  8. [蓝桥杯][算法提高] 填充蛋糕

    [蓝桥杯][算法提高] 填充蛋糕 编程计算涂满高为2,半径为r的圆形蛋糕表面,需要多少表面积的奶油(只要涂上表面和侧面) 读入一个数r,输出需要奶油的表面积,结果保留一位小数 样例输入 5.0 样例输 ...

  9. c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)

    题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

最新文章

  1. html5日期转long
  2. 互联网相似图像识别检索引擎 —— 基于图像签名的方式
  3. HikariCP--一款高性能的 JDBC 连接池
  4. hca卡 linux 查看_将Linux装入U盘随身带走!Awesome!
  5. native版本 修改项目react_react native项目改名(仅针对android)
  6. 西电计算机应用基础 一,15秋西电《计算机应用基础(一)》在线作业答案解析.doc...
  7. 前端—每天5道面试题(8)
  8. java 中的LongAdder
  9. Python的三种基本数据类型
  10. matlab求出拟合曲线的方程,已知数据点,拟合曲线并得到曲线方程。谢谢
  11. 如何查看我的订单-REST的流程API设计案例
  12. 老司机通过后视镜辨别车距 完爆倒车影像功能
  13. A or B Equals C Gym - 101028C
  14. 从苹果2015年春季发布会看移动互联网的发展
  15. My learning backups
  16. 开源项目也可以是你的良师益友
  17. Python大数据分析与应用—2020年中国高校毕业生薪酬指数排名
  18. 计算机辅助英语教学中的教学法原则,计算机英语教学中应做到以学生为中心的教学原则...
  19. vimium 快捷键列表
  20. document.onreadystatechange的认识

热门文章

  1. 集中化运维管理——Puppet管理之路
  2. 抖音卡点视频怎么制作
  3. 974. Subarray Sums Divisible by K [Medium]
  4. 2023年最新的区块链交易所开发的架构方案
  5. BIM技术都是如何应用于水利工程中
  6. CYPRESS S6E1C3 系列 FM0+ 32位单片机串口uart0 问题
  7. 小米装linux双系统,小米9双系统发布
  8. 蚂蚁金服 Service Mesh 深度实践
  9. VTK学习笔记(三十六)VTK图像填充
  10. 飞机步道(plane trails)