CCCPaste

Untitled

#include 
#include 
#include 
#include 
using namespace std;
 
int main()
{   int n, m;
    cin >> n >> m;
    vector graph[n + 1];
    for(int i =0 ; i < m; i++) {
        int a, b;
        cin >> a >> b;
        a--;
        b--;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    vector color(n + 1, -1);
    for(int i= 0 ;i < n; i++) {
        if(color[i] != -1) continue;
    
    queue q;
    q.push(i);
    q.push(1);
    color[i] = 1;
    while(!q.empty()) {
        int node = q.front();
        q.pop();
        int c = q.front();
        q.pop();
        for(int i = 0; i < graph[node].size(); i++) {
            
            int sosed = graph[node][i];
            
            if(color[sosed] != -1 and color[sosed] == color[node]) {
                return 0 * printf("IMPOSSIBLE\n");
            }
            if(color[sosed] == -1) {
                color[sosed] = 3 - c;
                q.push(sosed);
                q.push(3 - c);
            }
        }
    }
    }
    for(int i  =0; i < n; i++) {
        cout << color[i] << " ";
    }
    return 0;
}