fork download
  1. #include <iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. int n, m,cnt;
  6.  
  7. int a[150005], b[150005];
  8. int daxet[150005];
  9. vector <int> adj[150005];
  10. vector <int> f[150005];
  11.  
  12. void dfs(int v){
  13. daxet[v] = 1;
  14. f[cnt].push_back(v);
  15. for (int i = 0; i < adj[v].size(); i++){
  16. if (!daxet[adj[v][i]]){
  17. dfs(adj[v][i]);
  18. }
  19. }
  20. }
  21.  
  22. int main(){
  23. cin >> n >> m;
  24. for (int i = 1; i <= m; i++){
  25. cin >> a[i] >> b[i];
  26. adj[a[i]].push_back(b[i]);
  27. adj[b[i]].push_back(a[i]);
  28. }
  29. for (int i = 1; i <= n; i++){
  30. if (!daxet[i]){
  31. cnt++;
  32. dfs(i);
  33. }
  34. }
  35. int sz;
  36. for (int i = 1; i <= cnt; i++){
  37. sz = f[i].size();
  38. for (int j = 0; j < sz; j++){
  39. if (adj[f[i][j]].size() != sz-1){
  40. cout << "NO";
  41. return 0;
  42. }
  43. }
  44. }
  45. cout << "YES";
  46. return 0;
  47.  
  48. }
Success #stdin #stdout 0s 24032KB
stdin
10 4
4 3
5 10
8 9
1 2
stdout
YES