本文共 1035 字,大约阅读时间需要 3 分钟。
#include #include #include #include #include using namespace std;int main(){ // freopen("test.txt","r",stdin); int n,q; while(scanf("%d",&n)&&n) { map >son; map father; map gen; map temp; char str[61]; scanf("%s",str); gen[0]=string(str); temp[str]=0; for(int i=1;i s; s.push(gen[0]); while(s.size()) { string name=s.top(); for(int j=0;j ::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< <
转载于:https://www.cnblogs.com/xiuyangleiasp/archive/2012/10/30/2746424.html