Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int N = 1e5+5;
  6.  
  7. int totalNodes, totalEdges;
  8.  
  9. vector <int> edges[N];
  10.  
  11. bitset <N> visited;
  12.  
  13. int answer;
  14.  
  15. int deepFirstSearch(int node = 1){
  16. visited[node] = true;
  17. int numberVertexes = 0;
  18.  
  19. for ( auto it : edges[node] ){
  20.  
  21. if ( !visited[it] ){
  22. int numberNodes = deepFirstSearch(it);
  23. if ( numberNodes%2 == 0 )
  24. answer ++;
  25. else
  26. numberVertexes += numberNodes;
  27. }
  28. }
  29. return numberVertexes+1;
  30. }
  31.  
  32. inline void readVariables(){
  33. cin >> totalNodes >> totalEdges;
  34.  
  35. int origin, destination;
  36. for ( ; totalEdges; totalEdges-- ){
  37. cin >> origin >> destination;
  38. edges[origin].push_back(destination);
  39. edges[destination].push_back(origin);
  40. }
  41.  
  42. }
  43.  
  44. int main(){
  45. readVariables();
  46. deepFirstSearch();
  47. cout << answer;
  48. return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement