CVS

来源:互联网 发布:水果软件12教程 编辑:程序博客网 时间:2024/06/04 18:32

原题地址:点击打开链接


【分析】

。。函数式链表


【代码】

/**************************    ID:Ciocio    LANG:C++    DATE:2014-1-26    TASK:CVS**************************/#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>#include <queue>using namespace std;#define MAXN 1<<20struct node{node *l,*r;int p;}Pool[MAXN],*New=Pool;node* c[MAXN];int N,M,cs;node* Get(node* l,int p,node* r){New->l=l;New->p=p;New->r=r;return New++;}void _init(){cin>>N>>M;}node* Learn(node* x,int p){return Get(x,p,0);}node* Rollback(node* x){return Get(x->l->l,x->l->p,x);}node* Relearn(node* x){return Get(x,x->r->p,x->r->r);}node* Clone(node* x){return Get(x->l,x->p,x->r);}int Check(node* x){return x->p;}void _solve(){char Commend[10];int a,b;c[cs++]=Get(0,0,0);while(N--){scanf("%s%d",&Commend,&a);a--;if(!strcmp(Commend,"learn")){scanf("%d",&b);c[a]=Learn(c[a],b);}else if(!strcmp(Commend,"rollback")){c[a]=Rollback(c[a]);}else if(!strcmp(Commend,"relearn")){c[a]=Relearn(c[a]);}else if(!strcmp(Commend,"clone")){c[cs++]=Clone(c[a]);}else{int pt=Check(c[a]);if(pt) printf("%d\n",pt);else printf("basic\n");}}}int main(){_init();_solve();return 0;}


0 0
原创粉丝点击