|
@@ -0,0 +1,37 @@
|
|
|
+#include <bits/stdc++.h>
|
|
|
+using namespace std;
|
|
|
+const int MAXN = 1001;
|
|
|
+int F[MAXN];
|
|
|
+int father(int x){
|
|
|
+ return x == F[x] ? F[x] : F[x] = father(F[x]);
|
|
|
+}
|
|
|
+void merge(int x, int y){
|
|
|
+ int rx = father(x);
|
|
|
+ int ry = father(y);
|
|
|
+ if(rx != ry){
|
|
|
+ F[rx] = ry;
|
|
|
+ }
|
|
|
+}
|
|
|
+int main(){
|
|
|
+ int n, m;
|
|
|
+ while(cin >> n >> m){
|
|
|
+ if(n == 0)break;
|
|
|
+ for(int i = 1; i <= n; i++){
|
|
|
+ F[i] = i;
|
|
|
+ }
|
|
|
+ for(int i = 1; i <= m; i++){
|
|
|
+ int x, y;
|
|
|
+ cin >> x >> y;
|
|
|
+ merge(x, y);
|
|
|
+ }
|
|
|
+ int cnt = 0;
|
|
|
+ for(int i = 1; i <= n; i++){
|
|
|
+ if(F[i] == i)cnt++;
|
|
|
+ }
|
|
|
+ if(cnt > 1){
|
|
|
+ cout << "NO" << endl;
|
|
|
+ }else{
|
|
|
+ cout << "YES" << endl;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|