Guest User

Untitled

a guest
Jun 23rd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef long long ll;
  5.  
  6. typedef pair<int, int> pii;
  7. typedef vector<int> vi;
  8. #define S(a) scanf("%d",&a)
  9. #define LS(a) scanf("%lld",&a)
  10. #define D(a) scanf("%lf",&a)
  11. #define LD(a) scanf("%lf",&a)
  12. #define FOR(i, a, b) for(int i = a;i <= b;++i)
  13. #define DOW(i, b, a) for(int i = b; i >= a;--i)
  14. #define Sort(a) sort(a.begin(),a.end())
  15. #define eb emplace_back
  16. #define fi first
  17. #define se second
  18.  
  19.  
  20. const ld DINF = 1e45;
  21. const ll INF = 1e17;
  22. const ll MOD = 1e9 + 7;
  23. const int MAXF = 500010;
  24.  
  25.  
  26. int getCommon(pair<int, int> a, pair<int, int> b) {
  27.  
  28. if (a.first == b.first) return a.first;
  29. if (a.second == b.first) return a.second;
  30. if (a.first == b.second) return a.first;
  31. if (a.second == b.second) return a.second;
  32. return -1;
  33. }
  34.  
  35. vector<int> check(vector<pair<int, int>> a, vector<pair<int, int>> b) {
  36. set<int> com;
  37. for (int i = 0; i < a.size(); ++i) {
  38. set<int> cme;
  39. for (int j = 0; j < b.size(); ++j) {
  40. if (a[i] != b[j]) {
  41. int cm = getCommon(a[i], b[j]);
  42. if (cm != -1) {
  43. cme.insert(cm);
  44. if (cme.size() >= 2) return {-1};
  45.  
  46. }
  47. }
  48. }
  49. if (cme.size() > 0)
  50. com.insert(*cme.begin());
  51. }
  52. vector<int> ans(com.begin(), com.end());
  53. return ans;
  54. }
  55.  
  56. int main() {
  57. // freopen("input.txt", "r", stdin);
  58. // freopen("output.txt","w",stdout);
  59. int t;
  60. //S(t);
  61. t = 1;
  62. for (int tc = 1; tc <= t; ++tc) {
  63. int n,m;
  64. S(n),S(m);
  65. vector<pair<int, int>> a(n),b(m);
  66. for (int i = 0; i < n ; ++i) {
  67. S(a[i].first);
  68. S(a[i].second);
  69. int x = max(a[i].first,a[i].second);
  70. int y = min(a[i].first,a[i].second);
  71. a[i] = {x,y};
  72. }
  73. for (int j = 0; j < m ; ++j) {
  74. S(b[j].first);
  75. S(b[j].second);
  76. int x = max(b[j].first,b[j].second);
  77. int y = min(b[j].first,b[j].second);
  78. b[j] = {x,y};
  79. }
  80. vector<int> res1 = check(a,b);
  81. vector<int> res2 = check(b,a);
  82. if(res1.size() == 0 || res2.size() == 0 ||res1[0] == -1 || res2[0] == -1 || res1 != res2) {
  83. printf("-1\n");
  84. }else if(res1 == res2 && res1.size() >= 2){
  85. printf("0\n");
  86. }else {
  87. printf("%d\n",res1[0]);
  88. }
  89.  
  90.  
  91. }
  92.  
  93. return 0;
  94. }
Add Comment
Please, Sign In to add comment