A.cpp 763 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN = 1001;
  4. int F[MAXN];
  5. int father(int x){
  6. return x == F[x] ? F[x] : F[x] = father(F[x]);
  7. }
  8. void merge(int x, int y){
  9. int rx = father(x);
  10. int ry = father(y);
  11. if(rx != ry){
  12. F[rx] = ry;
  13. }
  14. }
  15. int main(){
  16. int n, m;
  17. while(cin >> n >> m){
  18. if(n == 0)break;
  19. for(int i = 1; i <= n; i++){
  20. F[i] = i;
  21. }
  22. for(int i = 1; i <= m; i++){
  23. int x, y;
  24. cin >> x >> y;
  25. merge(x, y);
  26. }
  27. int cnt = 0;
  28. for(int i = 1; i <= n; i++){
  29. if(F[i] == i)cnt++;
  30. }
  31. if(cnt > 1){
  32. cout << "NO" << endl;
  33. }else{
  34. cout << "YES" << endl;
  35. }
  36. }
  37. }