首页 > 其他 > 详细

UVA12096 集合栈计算机

时间:2019-05-27 00:09:05      阅读:176      评论:0      收藏:0      [点我收藏+]

#include<iostream>
#include<set>
#include<vector>
#include<map>
#include<algorithm>
#include<stack>
#include<cstring>
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
using namespace std;
typedef set<int> Set;
map<Set,int > IDL;
vector<Set> Setcache;
int ID(Set x)
{
  if(IDL.count(x))
    return IDL[x];
  Setcache.push_back(x);
  return IDL[x]=Setcache.size()-1;
}
int main()
{
  int t;
  cin>>t;
  while(t--)
  {
    int n;
    cin>>n;stack<int >s;
    for(int i=0;i<n;i++)
    {
      string op;
      cin>>op;
      if(op[0]==‘P‘)
        s.push(ID(Set()));
      else if(op[0]==‘D‘)
        s.push(s.top());
      else
      {
        Set x1=Setcache[s.top()];s.pop();
        Set x2=Setcache[s.top()];s.pop();
        Set x;
        if(op[0]==‘U‘)
        set_union(ALL(x1),ALL(x2),INS(x));
        if(op[0]==‘I‘)
        set_intersection(ALL(x1),ALL(x2),INS(x));
        if(op[0]==‘A‘)
        {
          x=x2;
          x.insert(ID(x1));
        }
        s.push(ID(x));
      }
      cout<<Setcache[s.top()].size()<<endl;
     }
    cout<<"***"<<endl;
  }
  return 0;
}

UVA12096 集合栈计算机

原文:https://www.cnblogs.com/ACM-Lxw/p/10928296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!