Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Created by gerwant on 24.03.19.
- //
- #include <iostream>
- #include <vector>
- #include <bitset>
- #include <algorithm>
- #include <queue>
- #include <stack>
- #define NMAX 20000
- #define BLACK 2
- #define WHITE 0
- #define GRAY 1
- void dfs_stepik(int cur_v, std::vector<int> g[], int color[], bool &colorable) {
- for (auto to: g[cur_v]) {
- if (color[to]==WHITE) {
- if(color[cur_v] == GRAY) {
- color[to] = BLACK;
- dfs_stepik(to,g,color,colorable);
- }
- else {
- color[to] = GRAY;
- dfs_stepik(to,g,color,colorable);
- }
- }
- else if(color[to] == color[cur_v]) {
- colorable = false;
- }
- }
- }
- int main(){
- std::ios_base::sync_with_stdio(false);
- std::cin.tie(nullptr);
- int n, m;
- bool colorable = true;
- std::cin >> n >> m;
- std::vector<int> g[NMAX];
- int colors[NMAX];
- for(int i = 0; i < m; i++) {
- int v1, v2;
- std::cin >> v1 >> v2;
- g[v1-1].push_back(v2-1);
- g[v2-1].push_back(v1-1);
- }
- for(int i =0; i<n; i++){
- if(colors[i] == WHITE){
- colors[i] = GRAY;
- dfs_stepik(i,g,colors,colorable);
- }
- }
- // colors[0] = GRAY;
- // dfs_stepik(0,g,colors,colorable);
- if(!colorable) {
- std::cout << "NO\n";
- return 0;
- }
- else{
- std::cout << "YES\n";
- for(int i =0; i < n; i++) {
- std::cout << colors[i] << " ";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement