Submission details
Task:Building Teams
Sender:ollipauna
Submission time:2025-09-08 16:42:45 +0300
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.41 sdetails
#7ACCEPTED0.41 sdetails
#8ACCEPTED0.41 sdetails
#9ACCEPTED0.42 sdetails
#10ACCEPTED0.19 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails

Code

#include<iostream>
#include<queue>
#include <unordered_map>
#include<tuple>

typedef long long ll;
using namespace std;

int main()
{
    ll students, friendships;

    cin >> students >> friendships;

    vector<ll> adj[students + 1];

    ll a, b;
    while (cin >> a >> b)
    {
        adj[a].push_back(b);
        adj[b].push_back(a);
    }

    vector<ll> teams(students + 1, 0);

    ll cluster = 1;

    for (int c = 1; c <= students; ++c)
    {
        if (teams[c] != 0)
        {
            continue;
        }
        else
        {   
            queue<tuple<ll, ll>> q;
            q.push(make_tuple(c, cluster));
            vector<ll> children;

            while (!q.empty())
            {   
                tuple<ll, ll> node = q.front();
                q.pop();
                ll student = get<0>(node);
                ll cluster = get<1>(node);
                teams[student] = cluster;

                for (const auto b : adj[student])
                {   
                    if (teams[b] == 0)
                    {
                        q.push(make_tuple(b, -1*cluster));
                    }
                    else if (teams[b] == cluster)
                    {
                        cout << "IMPOSSIBLE" << '\n';
                        return 0;
                    }
                }
            }
        }
    }

    for (int i = 1; i <= students; ++i)
    {   
        if (teams[i] == -1)
        {
            cout << 1;
        }
        else
        {
            cout << 2;
        }
        cout << endl;
    }


    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
10 20
3 4
8 10
3 7
1 8
...

correct output
1 1 1 2 2 1 2 2 2 1 

user output
2
2
2
1
1
...

Test 2

Verdict: ACCEPTED

input
10 20
1 3
8 10
2 4
6 8
...

correct output
1 1 2 2 1 1 1 2 1 1 

user output
2
2
1
1
2
...

Test 3

Verdict: ACCEPTED

input
10 20
7 10
3 10
9 10
2 10
...

correct output
1 2 2 1 1 1 2 1 2 1 

user output
2
1
1
2
2
...

Test 4

Verdict: ACCEPTED

input
10 20
2 4
2 10
7 10
4 6
...

correct output
1 2 1 1 2 2 2 1 2 1 

user output
2
1
2
2
1
...

Test 5

Verdict: ACCEPTED

input
10 20
3 5
8 10
9 10
1 8
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 6

Verdict: ACCEPTED

input
100000 200000
47355 96505
90709 92058
735 80715
91802 94265
...

correct output
1 2 2 1 2 1 1 1 2 2 1 2 1 1 1 ...

user output
2
1
1
2
1
...
Truncated

Test 7

Verdict: ACCEPTED

input
100000 200000
59991 95794
95150 96051
78453 94730
90411 95523
...

correct output
1 1 1 2 2 1 1 2 1 2 1 2 2 2 1 ...

user output
2
2
2
1
1
...
Truncated

Test 8

Verdict: ACCEPTED

input
100000 200000
89827 96402
65137 86792
80965 94708
19479 48078
...

correct output
1 2 1 1 2 1 2 2 2 1 2 1 1 2 1 ...

user output
2
1
2
2
1
...
Truncated

Test 9

Verdict: ACCEPTED

input
100000 200000
72952 83723
66197 70052
2949 52160
55753 95651
...

correct output
1 1 2 2 2 1 1 2 2 2 2 2 1 2 1 ...

user output
2
2
1
1
1
...
Truncated

Test 10

Verdict: ACCEPTED

input
100000 200000
38942 96755
70049 82663
7746 72732
87819 99029
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 11

Verdict: ACCEPTED

input
5 4
1 2
3 4
4 5
5 3

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 12

Verdict: ACCEPTED

input
4 5
1 2
1 4
2 3
2 4
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE