Submission details
Task:Building Teams
Sender:aalto26bm_001
Submission time:2026-09-08 01:32:57 +0300
Language:Rust (2021)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#60.12 sdetails
#70.12 sdetails
#80.12 sdetails
#90.14 sdetails
#10ACCEPTED0.09 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails

Compiler report

warning: unused variable: `i`
  --> input/code.rs:36:9
   |
36 |     for i in 0..m {
   |         ^ help: if this is intentional, prefix it with an underscore: `_i`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: function `take_int` is never used
 --> input/code.rs:3:4
  |
3 | fn take_int() -> i64 {
  |    ^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: function `take_vector` is never used
 --> input/code.rs:9:4
  |
9 | fn take_vector() -> Vec<i64> {
  |    ^^^^^^^^^^^

warning: function `take_string` is never used
  --> input/code.rs:23:4
   |
23 | fn take_string() -> Vec<char> {
   |    ^^^^^^^^^^^

warning: 4 warnings emitted

Code

use std::io::stdin;

fn take_int() -> i64 {
    let mut input = String::new();
    stdin().read_line(&mut input).unwrap();
    return input.trim().parse().unwrap()
}

fn take_vector() -> Vec<i64> {
    let mut input = String::new();
    stdin().read_line(&mut input).unwrap();
    let arr = input.trim().split_whitespace().map(|x| x.parse().unwrap()).collect();
    return arr;
}

fn take_vector_usize() -> Vec<usize> {
    let mut input = String::new();
    stdin().read_line(&mut input).unwrap();
    let arr = input.trim().split_whitespace().map(|x| x.parse().unwrap()).collect();
    return arr;
}

fn take_string() -> Vec<char> {
    let mut input = String::new();
    stdin().read_line(&mut input).unwrap();
    let vec:Vec<char> = input.trim().chars().collect();
    return vec;
}

pub fn main() {
    let line = take_vector_usize();
    let (n, m) = (line[0], line[1]);
    let mut team = vec![0; n];
    let mut e: Vec<Vec<usize>> = vec![vec![]; n];

    for i in 0..m {
        let line = take_vector_usize();
        let (mut a, mut b) = (line[0], line[1]);
        (a, b) = (a - 1, b - 1);
        e[a].push(b);
        e[b].push(a);
    }

    let mut visited = vec![false; n];
    let mut visited_count = 0;
    let mut nextt = 0;
    while visited_count < n {
        let mut work = vec![nextt];
        team[nextt] = 0;
        while work.len() > 0 {
            let cur = work.pop().unwrap();
            visited[cur] = true;
            visited_count += 1;
            let cur_team = team[cur];
            for friend in &e[cur] {
                if !visited[*friend] {
                    team[*friend] = 1 - cur_team;
                    work.push(*friend);
                } else {
                    if team[*friend] == cur_team {
                        println!("IMPOSSIBLE");
                        return;
                    }
                }
            }
        }
        while nextt < n && visited[nextt] {
            nextt += 1
        }
    }
    for t in team {
        print!("{} ", t + 1);
    }
}

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
1 1 1 2 2 1 2 2 2 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
1 1 2 2 1 1 1 2 1 1 

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
1 2 2 1 1 1 2 1 2 1 

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
1 2 1 1 2 2 2 1 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:

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
1 2 2 1 2 1 1 1 2 2 1 2 1 1 1 ...

Test 7

Verdict:

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
1 1 1 2 2 1 1 2 1 2 1 2 2 2 1 ...

Test 8

Verdict:

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
1 2 1 1 2 1 2 2 2 1 2 1 1 2 1 ...

Test 9

Verdict:

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
1 1 2 2 2 1 1 2 2 2 2 2 1 2 1 ...

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