poj 2732 Countdown(East Central North America 2005)
题意:建一个家庭树,找出有第d代子孙的名字,按照要求的第d代子孙的数从大到小输出三个人名,如果有一样大小子孙数的,就按字母序从小到大将同等大小的都输出,如果小于三个人的就全输出。
题目链接:http://poj.org/problem?id=2732
分析:数据量很小,直接建树,枚举暴力输出。我直接套模板用map建树的。
注意:1.每次测试数据时要清空map和vector!!!
2.注意输出要从大到小输出答案,如果答案有一样的按名字的字母序从小到大输出。答案用vector保存,vector排序:sort(v.begin(),v.end(),cmp);
3.注意嵌套模板的使用,map<string,vector<string> >fa;
另,关于建树,可以直接用int类型代替名字的string类型,给每个名字赋予一个编号。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
string name[];
map<string,int>mp;
map<string,vector<string> >fa;
vector<pair<string,int> >ans;
vector<string>v;
int fin(string na,int gen)
{
int ans=;
if(gen==)
return ;
for(int i=;i<mp[na];i++)
{
if(gen>=)
ans+=fin(fa[na][i],gen-);
}
return ans;
}
int cmp(pair<string,int>p1,pair<string,int>p2)
{
if(p1.second==p2.second)
return p1.first<p2.first;
return p1.second>p2.second;
}
int main()
{
int t,cnt=;
cin>>t;
while(t--)
{
fa.clear(); //每次样例注意清空数据
ans.clear();
mp.clear();
int n,d;
cin>>n>>d;
int num;
for(int i=;i<n;i++)
{
cin>>name[i];
cin>>num;
string child;
mp[name[i]]=num;
v.clear();
for(int j=;j<num;j++)
{
cin>>child;
v.push_back(child);
}
fa[name[i]]=v; //嵌套模板的使用
}
for(int i=;i<n;i++)
{
int res=fin(name[i],d);
if(res>)
ans.push_back(make_pair(name[i],res));
}
int len=ans.size();
sort(ans.begin(),ans.end(),cmp);
printf("Tree %d:\n",cnt);
for(int i=;i<len;i++) //注意答案的输出
{
if((i>)&&ans[i].second!=ans[i-].second)
break;
cout<<ans[i].first<<" "<<ans[i].second<<endl;
}
cnt++;
}
return ;
}
poj 2732 Countdown(East Central North America 2005)的更多相关文章
- MPI Maelstrom(East Central North America 1996)(poj1502)
MPI Maelstrom 总时间限制: 1000ms 内存限制: 65536kB 描述 BIT has recently taken delivery of their new supercom ...
- [bfs,深度记录] East Central North America Regional Contest 2016 (ECNA 2016) D Lost in Translation
Problem D Lost in Translation The word is out that you’ve just finished writing a book entitled How ...
- POJ 1240 Pre-Post-erous! && East Central North America 2002 (由前序后序遍历序列推出M叉树的种类)
题目链接 问题描述 : We are all familiar with pre-order, in-order and post-order traversals of binary trees. ...
- POJ 1240 Pre-Post-erous! && East Central North America 2002 (由前序后序遍历序列推出M叉树的种类)
题目链接:http://poj.org/problem?id=1240 本文链接:http://www.cnblogs.com/Ash-ly/p/5482520.html 题意: 通过一棵二叉树的中序 ...
- Gym-101673 :East Central North America Regional Contest (ECNA 2017)(寒假自训第8场)
A .Abstract Art 题意:求多个多边形的面积并. 思路:模板题. #include<bits/stdc++.h> using namespace std; typedef lo ...
- 2017-2018 ACM-ICPC East Central North America Regional Contest (ECNA 2017) Solution
A:Abstract Art 题意:给出n个多边形,求n个多边形分别的面积和,以及面积并 思路:模板 #include <bits/stdc++.h> using namespace st ...
- 2014-2015 ACM-ICPC East Central North America Regional Contest (ECNA 2014) A、Continued Fractions 【模拟连分数】
任意门:http://codeforces.com/gym/100641/attachments Con + tin/(ued + Frac/tions) Time Limit: 3000/1000 ...
- East Central North America 2006 Hie with the Pie /// 状压dp oj22470
题目大意: 输入n,有n个地方(1~n)需要送pizza pizza点为0点 接下来n+1行每行n+1个值 表示 i 到 j 的路径长度 输出从0点到各点送pizza最后回到0点的最短路(点可重复走) ...
- East Central North America Region 2015
E 每过一秒,当前点会把它的值传递给所有相邻点,问t时刻该图的值 #include <iostream> #include <cstdio> #include <algo ...
随机推荐
- jade模板
jade 模板使用 npm install jade -g 安装到全局 jade index.jade 导出一个 index.html 压缩后的 jade -P index. ...
- 【转载】Log4j详细使用教程
本文由林炳文Evankaka创作,出处http://blog.csdn.net/evankaka 日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日 ...
- Boostrap
基本认知: Boostrap绝对是目前最流行用得最广泛的一款框架.它是一套优美,直观并且给力的web设计工具包,可以用来开发跨浏览器兼容并且美观大气的页面. Bootstrap的优缺点: 缺点: 1. ...
- STM32F429i-DISCO FreeRTOS keil STM32CubeMX
目标: 在STM32F429 Disco开发板上用FreeRTOS双线程点亮双闪led. 准备: 0. STM32F429i-DISCO 1. keil ARMMDK 5.13 2. STM32Cub ...
- 2016ACM/ICPC亚洲区沈阳站-重现赛
C.Recursive sequence 求ans(x),ans(1)=a,ans(2)=b,ans(n)=ans(n-2)*2+ans(n-1)+n^4 如果直接就去解...很难,毕竟不是那种可以直 ...
- Using GET_APPLICATION_PROPERTY in Oracle D2k Forms
Using GET_APPLICATION_PROPERTY in Oracle D2k Forms DescriptionReturns information about the current ...
- ucos中的三种临界区管理机制
熟悉ucos,或者读过Jean.J.Labrosse写过的ucos书籍的人,一定会知道ucos中著名的临界区管理宏:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL(). 同样 ...
- 浅谈html5及其新特性
什么是 HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. HTML 的上一个版本诞生于 1999 年.自从那以后,Web 世界已经经历了巨变. HTML5 仍 ...
- 设置float之后vertical-align失效
相关博文: 关于Vertical-Align你需要知道的事情 https://segmentfault.com/a/1190000002668492
- Mac系统下配置JDK环境变量
第一次用Mac做开发,在网上也搜索了一些环境变量配置的文章,在此总结一下以方便日后使用. 1.打开终端Terminal: 2.进入当前用户主目录,cd ~: 3.临时授权,sudo su: 4.输入密 ...