hdu 4409 Family Name List
2012-10-30 15:32
288 查看
#include <iostream> #include <map> #include <set> #include <string> #include <stack> using namespace std; int main() { // freopen("test.txt","r",stdin); int n,q; while(scanf("%d",&n)&&n) { map<string,set<string> >son; map<string,string>father; map<int,string>gen; map<string,int>temp; char str[61]; scanf("%s",str); gen[0]=string(str); temp[str]=0; for(int i=1;i<n;i++) { scanf("%s",str); int k=0; while(str[k]=='.') k++; temp[str+k]=k; father[str+k]=gen[k-1]; gen[k]=str+k; son[father[str+k]].insert(str+k); } scanf("%d",&q); for(int i=0;i<q;++i) { char order[4]; scanf("%s",order); if(order[0]=='L') { stack<string>s; s.push(gen[0]); while(s.size()) { string name=s.top(); for(int j=0;j<temp[name];++j) putchar('.'); cout<<name<<endl; s.pop(); for(set<string>::reverse_iterator it=son[name].rbegin();it!=son[name].rend();++it) s.push(*it); } } if(order[0]=='b') { string name; cin>>name; if(temp[name]==0) printf("1\n"); else printf("%d\n",son[father[name]].size()); } if(order[0]=='c') { string name1,name2; cin>>name1>>name2; name1=father[name1]; name2=father[name2]; while(temp[name1]!=temp[name2]) { if(temp[name1]>temp[name2]) name1=father[name1]; else name2=father[name2]; } while(name1!=name2) { name1=father[name1]; name2=father[name2]; } cout<<name1<<endl; } } } return 0; }
相关文章推荐
- Hdu 4409 Family Name List (LCA 家谱 STL 2012金华网赛)
- HDU 4409 - Family Name List(模拟树+lca)
- hdu 4409 Family Name List
- HDU-4409 Family Name List LCA求解,TC+DFS || tarjan
- HDU 4409 Family Name List --乱搞、LCA
- HDU 4409 Family Name List 简单树操作
- HDU 4409 Family Name List --乱搞、LCA
- hdu 4409 Family Name List 金华赛区1010 (解题报告)
- HDU 4409 Family Name List ( 模拟 + LCA)
- hdu 4409 Family Name List LCA +stl
- HDU 4409 Family Name List(LCA)
- Family Name List (HDU 4409)
- ACM网络赛金华赛区的一道关于树的题:Family Name List
- 【模拟】 hdu4409 Family Name List
- HDU 1671 Phone List(
- hdu 1671 Phone List(字典树)
- HDU 1671 Phone List
- HDU_1671 POJ_3630 Phone List 【字典树】
- HDU 5808 Price List Strike Back (cdq 分治)
- java获取指定路径下的指定文件/java.io.File.listFiles(FilenameFilter filter)