fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int MAXN = 1e6 + 10;
  5. int parent[MAXN],n,x,y,k,size[MAXN];
  6. int find_root(int v){
  7. if (v == parent[v])
  8. return v;
  9. return find_root(parent[v]);
  10. }
  11. void make_set(int v) {
  12. parent[v] = v;
  13. size[v] = 1;
  14. }
  15. void union_sets(int a, int b) {
  16. a = find_root(a);
  17. b = find_root(b);
  18. if (a != b) {
  19. if (size[a] < size[b])
  20. swap(a, b);
  21. parent[b] = a;
  22. size[a] += size[b];
  23. }
  24. }
  25. bool check(int u, int v){
  26. return (find_root(u)==find_root(v));
  27. }
  28. int main()
  29. {
  30. cin>>n>>k;
  31. for (int i=1;i<=n;i++) make_set(i);
  32. for (int i=0;i<k;i++){
  33. cin>>x>>y;
  34. if (x>y) swap(x,y);
  35. union_sets(x,y);
  36. }
  37. for (int i=1;i<=(n+1)/2;i++) if (!check(i,n-i+1)) {
  38. cout<<"No";
  39. return 0;
  40. }
  41. cout<<"Yes";
  42. return 0;
  43. }
Success #stdin #stdout 0s 23048KB
stdin
Standard input is empty
stdout
Yes