省赛训练之C++的模版映射(六)
来源:互联网 发布:工商管理硕士就业知乎 编辑:程序博客网 时间:2024/05/01 16:46
#include<iostream>#include<map>#include<list>#include<string>using namespace std;struct Tman{string name;//本身的名字Tman *f;//父节点list<Tman *> s;//子节点};map<string,Tman *> hash;//表示hash是一个一字符串为标识的数组:hash[string] = Tman *;Tman *root;void output(int dev,Tman *now){if(now==NULL)return ;for(int i=1;i<=dev;++i)cout<<'+';cout<<now->name<<endl;for(list<Tman *>::iterator j=now->s.begin();j!=now->s.end();++j){output(dev+1,*j);}}void hires(string n1,string n2){//n1雇佣n2Tman *s1=hash[n1];//找到n1的地址Tman *s2 = new Tman();s2->name = n2;s2->f = s1;s1->s.push_back(s2);hash[n2] = s2;}//雇佣void fires(string n1){Tman *s1 = hash[n1];//找到n1的位置Tman *fa = s1->f;hash.erase(n1);while(s1->s.size()!=0){s1->name = s1->s.front()->name;//把它的名字等于下面的第一个儿子hash[s1->name] = s1;//把这个值边变为第一个s1 = s1->s.front();}s1->f->s.remove(s1);delete s1;}//解雇int main(){string s1,s2,a;int i;cin>>s1;root = new Tman();hash[s1] = root;root->name = s1;while(cin>>s1){if(s1=="print"){output(0,root);for(i=0;i<60;i++)cout<<'-';cout<<endl;}else if(s1=="fire"){cin>>s2;fires(s2);}else{cin>>a>>s2;hires(s1,s2);}}return 0;}
POJ-->2003Hire and Fire
方法:就是通过C++的模版进行的映射。
- 省赛训练之C++的模版映射(六)
- 省赛训练之并查集(六)
- (六)mybatis学习之输入映射与输出映射
- 【Hibernate】(六)关联映射之一对一映射
- 【Hibernate】(六)关联映射之一对一映射
- 逻辑思维训练(六)
- (六)Hibernate之单向一对一外键关联映射
- Hibernate征途(六)之数量和关系映射
- 【Hibernate框架开发之六】Hibernate中Annotation的关系映射&&组件映射!
- 我的c\c++之旅(六)
- 创建自己的maven模版【六】
- 省赛训练之基础(一)
- 省赛训练之基础(二)
- 省赛训练之递归(三)
- 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)
- 持久化API(JPA)系列(六)实体关系映射(ORM)之映射类型
- 持久化API(JPA)系列(六)实体关系映射(ORM)之映射类型
- 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)
- 深入浅出单实例Singleton设计模式
- java继承中属性值的判断
- Linux组件安装
- 魔兽世界角色
- Unity3D 官方基础教程 Learning the Interface
- 省赛训练之C++的模版映射(六)
- User and Privilege Manage
- 跟我学习GNU Emacs - 11
- 黑马程序员——泛型限定,上限,下限
- 读LEO《程序员羊皮卷》心得笔记
- 论YUV422(YUYV)与YUV420相互转换
- 【转】把Microsoft Outlook下载后删除的邮件恢复到web邮箱中
- MFC学习之 在按钮上加图标与文字共同显示
- java中的类型转换