fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #include <ext/pb_ds/assoc_container.hpp>
  4. #include <ext/pb_ds/tree_policy.hpp>
  5. using namespace __gnu_pbds;
  6. #define vi vector<int>
  7. #define vll vector<ll>
  8. #define vip vector<pair<int,int>>
  9. #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
  10. #define fs(n) fixed<<setprecision(n)
  11. #define all(v) v.begin(),v.end()
  12. #define rall(v) v.rbegin(),v.rend()
  13. #define ci(vector,n) for(int i=0; i<n; i++)cin>>vector[i]
  14. #define ci1(vector,n) for(int i=1; i<=n; i++)cin>>vector[i]
  15. #define ll long long
  16. const long long mod = 1e9 + 7;
  17. const long long mod2 = 998244353;
  18. int rr[] = { 1,1,1,-1,-1,-1,0,0 };
  19. int cc[] = { 1,-1,0,1,-1,0,1,-1 };
  20. void fast() {
  21. std::ios_base::sync_with_stdio(0);
  22. cin.tie(NULL);
  23. cout.tie(NULL);
  24. }
  25. struct point {
  26. int x, y;
  27. }typedef* p;
  28. vector<bool>vis(10003);
  29. void dfs (int start,vector<vi>&adj)
  30. {
  31. //1=componet
  32. vis[start]=1;
  33. for (int i = 0; i <adj[start].size(); ++i) {
  34. if(!vis[adj[start][i]])
  35. dfs(adj[start][i],adj);
  36. }
  37. }
  38. void solve() {
  39. int n,m,u,v;
  40. cin>>n>>m;
  41. vector<vi>adj(n);
  42. vi nods;
  43. for (int i = 0; i <m; ++i) {
  44. cin>>u>>v;
  45. u--,v--;
  46. adj[u].push_back(v);
  47. // adj[v].push_back(u);
  48. nods.push_back(u);
  49. // nods.push_back(v);
  50. }
  51. int c=0;
  52. for (auto it:nods) {
  53. if(!vis[it])
  54. {
  55. c++;
  56. dfs(it,adj);
  57. }
  58. }
  59. if(c>1||n-1!=m)
  60. cout<<"NO\n";
  61. else
  62. {
  63.  
  64. cout<<"YES\n";
  65.  
  66. }
  67.  
  68. }
  69.  
  70. int main() {
  71. //freopen("two2.in","r",stdin);
  72. //freopen("engy.txt","w",stdout);
  73. fast();
  74. int t = 1;
  75. // cin >> t;
  76. while (t--)
  77. solve();
  78.  
  79. }
Success #stdin #stdout 0.01s 5456KB
stdin
Standard input is empty
stdout
NO