fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. using ll = long long;
  5. int main() {
  6. ll n ;
  7. ll m;
  8.  
  9. cin>>n>>m;
  10.  
  11. vector<ll>G[n+1];
  12.  
  13. for(int i = 1 ; i<=m ;i++){
  14. int u,v;
  15. cin>>u>>v;
  16. G[u].push_back(v);
  17. G[v].push_back(u);
  18. }
  19. int red=0 , blue = 0;
  20. vector<int>used(n+1);
  21. queue<ll>q;
  22. used[1]=1;
  23. q.push(1);red++;
  24. bool ans = true;
  25. while(!q.empty()){
  26. auto u = q.front();
  27. q.pop();
  28.  
  29. for(auto v : G[u]){
  30. if(used[v] == 0){
  31. if(used[u] == 1){
  32. used[v]=3;
  33.  
  34. blue++;
  35. }else if(used[u] == 3){
  36. used[v] = 1;
  37. red++;
  38. }
  39. q.push(v);
  40. }else{
  41. if(used[u]+used[v] != 4){
  42. ans = false;
  43. }
  44. }}
  45.  
  46.  
  47. }
  48. if (ans == false){
  49. cout<<"nO";
  50. }else{
  51. cout<<red <<" "<<blue<<endl;
  52. cout<<"YES"<<endl;
  53. }
  54. return 0;
  55. }
Success #stdin #stdout 0s 5320KB
stdin
5 5
0 1
0 2
0 3
1 2
3 2
stdout
nO