#include<bits/stdc++.h> using namespace std; int n,cnt,Q; map<int,int>mp; int head; struct List{ int to,val,frm; }e[200005]; int main(){ scanf("%d",&Q); while(Q--){ int opt,x,y; scanf("%d",&opt); if(opt==1){ scanf("%d%d",&x,&y); if(!y){ cnt++; e[cnt].val=x; mp[x]=cnt; head=cnt; } else{ cnt++; e[cnt].val=x; mp[x]=cnt; int to=e[mp[y]].to; e[mp[y]].to=cnt; e[cnt].frm=mp[y]; e[cnt].to=to; e[to].frm=cnt; } } else{ scanf("%d",&x); if(e[head].val==x){ e[head].val=0; int to=e[head].to; e[head].to=0; head=to; e[head].frm=0; mp[x]=0; } else{ e[mp[x]].val=0; e[e[mp[x]].frm].to=e[mp[x]].to; e[e[mp[x]].to].frm=e[mp[x]].frm; mp[x]=0; } } } int ans=0; for(int i=head;i;i=e[i].to)ans++; printf("%d\n",ans); for(int i=head;i;i=e[i].to){ printf("%d ",e[i].val); } }
全部评论
(0) 回帖