题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805266942377984

测试点3有点坑,要补全为0
最大值是100000

代码

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<map>
  4. #include<iostream>
  5. #include<set>
  6. using namespace std;
  7. map<int, int> mp;
  8. set<int> st;
  9. int main(){
  10. int n, m;
  11. int hash[100000] = {0};
  12. int temp1, temp2;
  13. scanf("%d", &n);
  14. for(int i = 0 ; i < n; i++){
  15. scanf("%d%d", &temp1, &temp2);
  16. mp[temp1] = temp2;
  17. mp[temp2] = temp1;
  18. }
  19. scanf("%d", &m);
  20. for(int i = 0; i < m; i++){
  21. scanf("%d", &temp1);
  22. hash[temp1] = 1;
  23. st.insert(temp1);
  24. }
  25. for(int i = 0; i < 100000; i++){
  26. if(hash[i] == 1){
  27. if(mp.find(i) != mp.end() && hash[mp[i]] == 1){
  28. st.erase(i);
  29. }
  30. }
  31. }
  32. cout<<st.size()<<endl;
  33. int first = 0;
  34. for(auto it = st.begin(); it != st.end(); it++){
  35. if(first) cout<<" ";
  36. printf("%05d", *it);
  37. first=1;
  38. }
  39. }