Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. //
  2. // Created by gerwant on 24.03.19.
  3. //
  4. #include <iostream>
  5. #include <vector>
  6. #include <bitset>
  7. #include <algorithm>
  8. #include <queue>
  9. #include <stack>
  10.  
  11.  
  12. #define NMAX 20000
  13. #define BLACK 2
  14. #define WHITE 0
  15. #define GRAY 1
  16.  
  17.  
  18. void dfs_stepik(int cur_v, std::vector<int> g[], int color[], bool &colorable) {
  19.     for (auto to: g[cur_v]) {
  20.         if (color[to]==WHITE) {
  21.             if(color[cur_v] == GRAY) {
  22.                 color[to] = BLACK;
  23.                 dfs_stepik(to,g,color,colorable);
  24.             }
  25.             else {
  26.                 color[to] = GRAY;
  27.                 dfs_stepik(to,g,color,colorable);
  28.             }
  29.         }
  30.         else if(color[to] == color[cur_v]) {
  31.             colorable = false;
  32.         }
  33.     }
  34. }
  35.  
  36. int main(){
  37.  
  38.     std::ios_base::sync_with_stdio(false);
  39.     std::cin.tie(nullptr);
  40.     int n, m;
  41.  
  42.     bool colorable = true;
  43.  
  44.     std::cin >> n >> m;
  45.     std::vector<int> g[NMAX];
  46.     int colors[NMAX];
  47.  
  48.  
  49.  
  50.     for(int i = 0; i < m; i++) {
  51.  
  52.         int v1, v2;
  53.         std::cin >> v1 >> v2;
  54.         g[v1-1].push_back(v2-1);
  55.         g[v2-1].push_back(v1-1);
  56.  
  57.     }
  58.  
  59.     for(int i =0; i<n; i++){
  60.         if(colors[i] == WHITE){
  61.             colors[i] = GRAY;
  62.             dfs_stepik(i,g,colors,colorable);
  63.         }
  64.     }
  65. //    colors[0] = GRAY;
  66. //    dfs_stepik(0,g,colors,colorable);
  67.    
  68.     if(!colorable) {
  69.         std::cout << "NO\n";
  70.         return 0;
  71.     }
  72.     else{
  73.         std::cout << "YES\n";
  74.         for(int i =0; i < n; i++) {
  75.             std::cout << colors[i] << " ";
  76.         }
  77.     }
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement