fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define enter(v) for(int i=0;i<v.size();i++)cin>>v[i]
  5. #define leave(v) for(int i=0;i<v.size();i++){if(i)cout<<" ";cout<<v[i]}
  6.  
  7. vector<bool>visited;
  8.  
  9. void dfs2(vector<int>adj[],int u){
  10. visited[u]=1;
  11. for(int i=0;i<adj[u].size();i++){
  12. int v=adj[u][i];
  13. if(!visited[v]){
  14. dfs2(adj,v);
  15. }
  16. }
  17. }
  18.  
  19. int main(){
  20. ios::sync_with_stdio(false);
  21. cin.tie(nullptr);
  22.  
  23. int n,m;
  24. cin>>n>>m;
  25.  
  26. vector<int>adj[n+1];
  27. for(int i=0;i<m;i++){
  28. int f,s;
  29. cin>>f>>s;
  30. adj[f].push_back(s);
  31. adj[s].push_back(f);
  32. }
  33.  
  34. bool can=true;
  35.  
  36. if(n==1){
  37. cout<<(m==0?"YES\n":"NO\n");
  38. return 0;
  39. }
  40.  
  41. if(m!=n-1){
  42. cout<<"NO\n";
  43. return 0;
  44. }
  45.  
  46. visited.assign(n+1,0);
  47. dfs2(adj,1);
  48.  
  49. for(int i=1;i<=n;i++){
  50. if(!visited[i]){
  51. can=false;
  52. break;
  53. }
  54. }
  55.  
  56. cout<<(can?"YES\n":"NO\n");
  57. }
  58.  
Success #stdin #stdout 0s 5260KB
stdin
Standard input is empty
stdout
NO