2129: 卡勒沃夫之弱水路三千(提高型)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 26  Solved: 8
[Submit][Status][Web Board]

Description

锦瑟年华谁与度 莫问情归处 只影向斜阳 剑吼西风 欲把春留驻
天涯芳草无归路 回首花无数 解语自销魂 弱袂萦春 尘缘不相误
......
在卡勒沃夫充满文学杀伤力的声音中,身处紫荆2号楼202B的四位远近高低各不同的室友纷纷回忆起了各自波澜起伏的过去,并对长在百草园,邻有百花谷的现状表达了各自的见解。
某Q:"...我小学就开窍了...她的父母说我很好,但是...今天又和北林的联系了..."
某X:"...差点就成了,结果到学校了...这个方法放假了我去对我的同桌用!..."
某W:"..."(千言万语不言中,有大量的故事等待考古)
某Z:"...为了来清华...咱们审美观不一样,不会抢..."
......
卡勒沃夫在这个不朽的夜话中搜集出了某人零散的历任女友资料,为了强迫某人将他出的题目的标程交出,现在卡勒沃夫需要一个能将这些零散信息整合起来的 程序。伴随着雄壮委婉动人的音乐,身为程序设计快男(超女)的你降临了!卡勒沃夫正对着您做Orz状并请求着:"神牛啊~请施舍给我一段程序把~偶米头 发~"。。

Input

第一行为一个不超过5的整数T,表示数据的组数。之后每组数据的一行为一个不超过100的整数n。之后n行每行有两个用单个空格隔开的字符串(每个字符串只有英文大小写字母,长度不超过10),为两位mm的名字。每行第一个mm先于第二个mm成为某人的女友。
在这里我们假装诅咒某人不会同时被两个或两个以上mm泡,某个mm抛弃了某人后不会再吃回头草,同时卡勒沃夫深邃的洞察力使得他收集到了充足的信息以确定某人女友的先后顺序。
在小数据组中出现的人物不超过13个

Output

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

Sample Input

22RY UnknownYSZ RY3tomorrow yestodaytomorrow todaytoday yestoday

Sample Output

YSZ RY Unknowntomorrow today yestoday

理解是有点难,认认真真看代码 最近忙  没法写那么多的解析了。

#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<queue>
using namespace std;  const int maxn=1000+5;  map<string,int>n;
map<int,string>m;
vector<int>p[maxn];
int inde[maxn];
int t,x,k;  void toposort()
{  queue<int> q;  vector<int> ans;  int i=0;  while(inde[i]!=0)i++;  q.push(i);  while(!q.empty())  {  int t=q.front();  ans.push_back(t);  q.pop();  for(i=0; i<p[t].size(); i++)  {  inde[p[t][i]]--;  if(inde[p[t][i]]==0)  {  q.push(p[t][i]);  }  }  }  for(i=0; i<ans.size()-1; i++)  {  cout<<m[ans[i]]<<" ";  }  cout<<m[ans[i]]<<endl;
}  int main()
{  cin>>t;  while(t--)  {  cin>>x;  string a,b;  k=0;  n.clear();  m.clear();  for(int i=0; i<maxn; i++)  {  p[i].clear();  }  memset(inde,0,sizeof(inde));  while(x--)  {  cin>>a>>b;  if(a==b)continue;  if(!n.count(a))  {  n[a]=k,m[k]=a,k++;  }  if(!n.count(b))  {  n[b]=k,m[k]=b,k++;  }  p[n[a]].push_back(n[b]);  inde[n[b]]++;  }  toposort();  }  return 0;
}

zcmu-2129(拓扑排序)相关推荐

  1. 【图论】有向无环图的拓扑排序

    1. 引言 有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环.常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度.拓扑排序是对DA ...

  2. C#实现有向无环图(DAG)拓扑排序

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在 ...

  3. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  4. usaco frame up(所有拓扑排序的输出)

    先根据图建图再拓扑排序. /** ID: jinbo wu TASK: frameup LANG:C++ */ #include<bits/stdc++.h> using namespac ...

  5. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

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

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

  7. 极小连通子图和极大连通子图_强连通分量与拓扑排序

    前言 由于GacUI里面开始多处用上拓扑排序,我决定把之前瞎JB搞出来的算法换掉,换成个正式的.之前我自己弄了个写起来很简单的算法,然后每一处需要用到的地方我就重新做一遍.当然这样肯定也是不行的,我觉 ...

  8. 图论之拓扑排序 poj 2367 Genealogical tree

    题目链接 http://poj.org/problem?id=2367 题意就是给定一系列关系,按这些关系拓扑排序. #include<cstdio> #include<cstrin ...

  9. 用拓扑排序检测有向图中是否有环

    目录 算法主要步骤 代码 测试数据 提示:由于拓扑排序的检测方式不涉及到边权或点权,所以拓扑序列中的正环和负环都能够被检测出来.检测可达负环可以用Bellman-Ford或者SPFA. 算法主要步骤 ...

  10. 【数据结构】拓扑排序

    如果一个有向图中没有包含简单的回路,这样的图为有向无环图. 图中的顶点代表事件(活动),图中的有向边说明了事件之间的先后关系.这种用顶点表示活动,用弧表示活动时间的优先关系的有向图称为顶点表示活动的网 ...

最新文章

  1. delete后加 limit是个好习惯么 !
  2. 行内块元素有哪些标签_html的行内元素与块级元素总结
  3. python环境离线复制_Python 离线环境
  4. 回顾inputstream和outputstream
  5. 干货|亲测有效的N倍学习效果笔记法
  6. CC1101、SI4432、SI4463 相互通信的可能性与得失探讨
  7. 通过jQuery给select元素的option标签添加自定义属性
  8. Java工作笔记-判断文件是否被正在被写入
  9. powerdesigner2
  10. 修改Linux用户的UID、GID
  11. 在docker container中为gsutil认证gcloud
  12. python如何用色度表示数值大小_python入门004数字(例程界面很清晰大小也合适)
  13. IDEA中项目引入独立包打包失败问题解决(找不到包)
  14. 自学python好找工作么-转行去培训班学Python好找工作吗?老男孩教育
  15. oracle财务系统表,Oracle ERP 财务模块表结构.ppt
  16. 数据恢复工具 winhex使用教程
  17. android如何截屏快捷键,安卓手机怎么截图 各大品牌快捷键截屏大集合
  18. 线性拟合——离群点outliers的处理
  19. 高效工具-requirement生成和配置
  20. 经典时尚风格PS调色动作

热门文章

  1. js操作DOM对象(节点的增删改)
  2. coursera 《现代操作系统》 -- 第十周 文件系统(2)
  3. ng-init,ng-controller,ng-model
  4. Asp.Net Mvc之模型注解
  5. 财务管理的革新带动财务软件的变革
  6. Android应用程序运行方式以及优先级
  7. 浅谈 Python 程序和 C 程序的整合
  8. 希尔排序python实现
  9. [C++调试笔记]/* 求解-0.5dt时刻速度 */
  10. 用ConfigParser模块读写conf配置文件