为什么样例对了但全WA(模板库应用2-集合1)

题目描述

题目描述

现在有10个集合(元素不可重),编号为0~9,现在有6种操作:

  1. 给一个集合x插入一个数y。
  2. 给一个集合x删除一个数y(如果没有就不删)。
  3. 给两个集合x,y,将集合x=x∪y(集合求并集),并将y清空。
  4. 给两个集合x,y,将集合x=x∩y(集合求交集),并将y清空。
  5. 给一个集合x和一个数y,询问集合x中是否出现了y。
  6. 给一个集合x,问集合x中有多少个数。

不保证所有数不相同。

注意操作3与操作4:当x=y时,操作后将y清空,由于x=y,所以集合x是空集。

输入描述

输入一个n,表示接下来有n次操作,

接下来n行每行一个数op,

若op=1~5,则之后再跟两个数x,y。

若op=6,则之后再跟一个数x。

输出描述

对于每个操作5,6各输出一行表示答案

样例输入

15
1 3 62201
4 1 4
6 3
2 4 42881
2 9 90161
5 4 11649
3 8 3
4 9 5
1 6 54033
6 0
2 3 60171
1 7 84681
3 5 4
1 1 98337
5 0 24497

样例输出

1
No
0
No

数据范围

n=100000,集合编号小于10,数字小于等于100000

时空限制

1s,512M

\text{My Code}

#include <bits/stdc++.h>
using namespace std;
int n,y,x,a;
set<int>s[13];
int main(){
  cin>>n;
  while(n--){
    cin>>a;
    if(a==1){
      cin>>x>>y;
      s[x].insert(y);
    }
    if(a==2){
      cin>>x>>y;
      s[x].erase(y);
    }
    if(a==5){
      cin>>x>>y;
      if(s[x].count(y)){
        cout<<"Yes\n";
      }else{
        cout<<"No\n";
      }
    }
    if(a==6){
      cin>>x;
      cout<<s[x].size()<<'\n';
    }
    if(a==3){
      cin>>x>>y;
      s[x].insert(s[y].begin(),s[y].end());
      s[y].clear();
    }
    if(a==4){
      cin>>x>>y;
      set<int>t,p=s[x];
	  p.insert(s[y].begin(),s[y].end());
      t.insert(p.begin(),p.end());
      s[x].insert(t.begin(),t.end());
      s[y].clear();
    }
  }
  return 0;
}