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 ...
随机推荐
- 初始angular框架(2)
看文档看不懂吧 那就应该看看点例子 看什么例子呢 看看视频教程 一般老师会把一些重要的地方着重讲解的 不懂就反复的看
- arm 2440 linux 应用程序 nes 红白机模拟器 第2篇 InfoNES
InfoNES 支持 map ,声音,代码比较少,方便 移值. 在上个 LiteNES 的基础上,其实不到半小时就移值好了这个,但问题是,一直是黑屏.InfoNES_LoadFrame () Wo ...
- 放在NSArray、NSDictionary等容器内的对象Item,Item中的property在程序运行过程中被无故释放
可能是被释放的property本身是OC对象而它的属性被误写成assign,例如: @interface MyItem : Object @property (nonatomic, assign) N ...
- FFmpeg相关资料
编译: http://www.jianshu.com/p/147c03553e63 http://www.cocoachina.com/ios/20150514/11827.html http://c ...
- Rest Post示例(java服务端、python客户端)
前提:服务端是现成的,java.springMVC.resttemplate.jboss等:突然有个需要,要在windows上开发一个客户端,作用是定期向服务端上传文件.想了想,如果客户端写一个jav ...
- IOS监听屏幕状态
一.定义两个宏 //锁屏通知 #define NotificationOff CFSTR("com.apple.springboard.lockcomplete") //解 ...
- [TCPIP] DNS Note
TCPIP DNS 域名系统 DNS 是一个应用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息. 对DNS的访问是通过一个地址解析器来完成的,在Un ...
- 理清C++常量指针和指针常量这团乱麻
写在前面: 与其说C++中的常量指针和指针常量是一块很有嚼头的语法糖,不如说它是一块相当难啃的骨头.其实本来没什么,这无非是const int *p与int* const p的区别, 但一涉及到起名字 ...
- Mifare系列4-组成(转)
文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38081241 MIFARE集成电路芯片内含EEPROM.RF接口和数字控制单元. ...
- Sprint(第十二天11.25)