Advertisement
Josif_tepe

Untitled

Mar 20th, 2024
506
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <queue>
  5. using namespace std;
  6.  
  7. int main()
  8. {   int n, m;
  9.     cin >> n >> m;
  10.     vector<int> graph[n + 1];
  11.     for(int i =0 ; i < m; i++) {
  12.         int a, b;
  13.         cin >> a >> b;
  14.         a--;
  15.         b--;
  16.         graph[a].push_back(b);
  17.         graph[b].push_back(a);
  18.     }
  19.     vector<int> color(n + 1, -1);
  20.     for(int i= 0 ;i < n; i++) {
  21.         if(color[i] != -1) continue;
  22.    
  23.     queue<int> q;
  24.     q.push(i);
  25.     q.push(1);
  26.     color[i] = 1;
  27.     while(!q.empty()) {
  28.         int node = q.front();
  29.         q.pop();
  30.         int c = q.front();
  31.         q.pop();
  32.         for(int i = 0; i < graph[node].size(); i++) {
  33.            
  34.             int sosed = graph[node][i];
  35.            
  36.             if(color[sosed] != -1 and color[sosed] == color[node]) {
  37.                 return 0 * printf("IMPOSSIBLE\n");
  38.             }
  39.             if(color[sosed] == -1) {
  40.                 color[sosed] = 3 - c;
  41.                 q.push(sosed);
  42.                 q.push(3 - c);
  43.             }
  44.         }
  45.     }
  46.     }
  47.     for(int i  =0; i < n; i++) {
  48.         cout << color[i] << " ";
  49.     }
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement