| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
贴个代码#include <map>
#include <list>
#include <cstdio>
#include <string>
#include <iostream>
#define maxn 100
using namespace std;
struct Tman{
string name;
Tman *f; ///父指针
list<Tman *>s; ///储存儿子的队列指针s
Tman(){f=NULL;}
};
map<string,Tman*> hash; ///hash[x]存储成员名为x的根子树指针
Tman *root;
void print(long dep,Tman *now){
if(now==NULL)return;
for(long i=1;i<=dep;++i)
putchar('+');
printf("%s\n",now->name.c_str());
for(list<Tman*>::iterator j=now->s.begin();j!=now->s.end();++j)
print(dep+1,*j);
}
void hiers(string a,string b){
Tman*f=hash[a];
Tman*s=new Tman();
s->name=b;
s->f=f;
f->s.push_back(s);
hash[b]=s;
}
void fire(string t){
Tman*s=hash[t];
Tman*f=s->f;
hash.erase(t);
while(s->s.size()!=0){
s->name=s->s.front()->name;
hash[s->name]=s;
s=s->s.front();
}
s->f->s.remove(s);
delete s;
}
int main(){
string s1,s2;
long i;
cin>>s1;
root=new Tman();
hash[s1]=root;
root->name=s1;
while(cin>>s1){
if(s1=="print"){
print(0,root);
for(i=1;i<=60;++i)
putchar('-');
putchar('\n');
}
else if(s1=="fire"){
cin>>s2;
fire(s2);
}
else {
cin>>s2;
cin>>s2;
hiers(s1,s2);
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator