Submission details
Task:Apartments
Sender:aalto26bh_034
Submission time:2026-09-06 21:20:03 +0300
Language:C++ (C++23)
Status:READY
Result:
Test results
testverdicttime
#10.01 sdetails
#20.00 sdetails
#30.00 sdetails
#40.00 sdetails
#50.24 sdetails
#60.26 sdetails
#70.24 sdetails
#80.24 sdetails
#90.00 sdetails
#100.00 sdetails
#110.00 sdetails
#120.00 sdetails
#13--details
#14--details
#15--details
#16--details
#170.14 sdetails
#180.00 sdetails
#190.00 sdetails

Code

#include <string>
#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>


using namespace std;

int main()
{
    int n_cities;
    int n_roads;
    cin >> n_cities >> n_roads;
    

    unordered_map<int, unordered_set<int>> city_map;
    unordered_set<int> seen_cities;     

    int road1, road2;

    for(int i = 0; i < n_roads; i++)
    {
        bool in = false;
        int temp_key;
        cin >> road1 >> road2;

        for(auto & [key, val] : city_map)
        {
            if(seen_cities.find(road1) == seen_cities.end() && seen_cities.find(road2) == seen_cities.end()) break;
            if(val.find(road1) != val.end() || val.find(road2) != val.end())
            {
                val.insert(road1);
                val.insert(road2);
                if(!in)
                {
                    temp_key = key, in = true;
                    if(!(seen_cities.find(road1) != seen_cities.end() && seen_cities.find(road2) != seen_cities.end())) break;
                }
                else
                {
                    city_map[temp_key].merge(val);
                    city_map.erase(key);
                    break;
                }
            }
        }
        if(!in)
        {
            unordered_set<int> temp = {road1, road2};
            city_map[road1] = temp;
        }
        seen_cities.insert(road1);
        seen_cities.insert(road2);
    }
    for(int i = 1; i <= n_cities; i++)
    {
        if(!seen_cities.count(i))
        {
            city_map[i] = {i};
        }
    }
    printf("%ld\n", city_map.size() - 1);
    unordered_map<int, unordered_set<int>>::iterator it1;
    unordered_map<int, unordered_set<int>>::iterator it2 = city_map.begin();
    it2++;
    for(it1 = city_map.begin(); it2 != city_map.end(); ++it1, ++it2)
    {
        printf("%d %d\n", *(it1->second.begin()), *(it2->second.begin()));
    }

}   

Test details

Test 1

Verdict:

input
10 10 0
37 62 56 69 34 46 10 86 16 49
50 95 47 43 9 62 83 71 71 7

correct output
1

user output
16
7 6
6 5
5 37
37 50
...

Feedback: Output is longer than expected

Test 2

Verdict:

input
10 10 10
90 41 20 39 49 21 35 31 74 86
14 24 24 7 82 85 82 4 60 95

correct output
6

user output
15
9 8
8 6
6 20
20 90
...

Feedback: Output is longer than expected

Test 3

Verdict:

input
10 10 1000
59 5 65 15 42 81 58 96 50 1
18 59 71 65 97 83 80 68 92 67

correct output
10

user output
15
8 71
71 97
97 9
9 50
...

Feedback: Output is longer than expected

Test 4

Verdict:

input
10 10 1000000000
25 80 59 43 67 21 77 5 8 99
66 41 62 24 88 55 1 53 50 60

correct output
10

user output
16
10 9
9 7
7 6
6 25
...

Feedback: Output is longer than expected

Test 5

Verdict:

input
200000 200000 0
34 48 12 99 89 71 20 7 9 38 58...

correct output
197286

user output
199900
200000 199999
199999 199998
199998 199997
199997 199996
...

Feedback: Output is longer than expected

Test 6

Verdict:

input
200000 200000 10
89 26 46 74 91 19 47 18 83 85 ...

correct output
200000

user output
199900
200000 199999
199999 199998
199998 199997
199997 199996
...

Feedback: Output is longer than expected

Test 7

Verdict:

input
200000 200000 1000
71 84 11 90 70 59 60 11 52 65 ...

correct output
200000

user output
199899
200000 199999
199999 199998
199998 199997
199997 199996
...

Feedback: Output is longer than expected

Test 8

Verdict:

input
200000 200000 1000000000
21 94 92 4 12 5 38 47 59 92 2 ...

correct output
200000

user output
199900
200000 199999
199999 199998
199998 199997
199997 199996
...

Feedback: Output is longer than expected

Test 9

Verdict:

input
10 10 0
727245017 647121519 549745115 ...

correct output
0

user output
19
10 9
9 8
8 7
7 5
...

Feedback: Output is longer than expected

Test 10

Verdict:

input
10 10 10
30734435 218114477 257355293 4...

correct output
0

user output
18
9 8
8 5
5 30734435
30734435 6
...

Feedback: Output is longer than expected

Test 11

Verdict:

input
10 10 1000
7899629 162004163 327616450 51...

correct output
0

user output
19
10 9
9 8
8 7
7 6
...

Feedback: Output is longer than expected

Test 12

Verdict:

input
10 10 1000000000
725746771 537157640 742868604 ...

correct output
10

user output
19
8 6
6 5
5 4
4 725746771
...

Feedback: Output is longer than expected

Test 13

Verdict:

input
200000 200000 0
375495587 322263536 985991668 ...

correct output
42

user output
(empty)

Test 14

Verdict:

input
200000 200000 10
906603621 968136956 666786366 ...

correct output
846

user output
(empty)

Test 15

Verdict:

input
200000 200000 1000
215460174 880023362 242442952 ...

correct output
57149

user output
(empty)

Test 16

Verdict:

input
200000 200000 1000000000
50349580 773460492 440699400 8...

correct output
200000

user output
(empty)

Test 17

Verdict:

input
199999 1 1
199996 199997 149999 117797 19...

correct output
1

user output
199997
199999 199998
199998 199997
199997 199995
199995 199994
...

Feedback: Output is longer than expected

Test 18

Verdict:

input
5 2 2
2 2 2 40 50
40 50

correct output
2

user output
4
5 4
4 3
3 1
1 2

Feedback: Output is longer than expected

Test 19

Verdict:

input
4 3 5
60 45 80 60
30 60 75

correct output
2

user output
5
4 3
3 2
2 1
1 80
...

Feedback: Output is longer than expected