Submission details
Task:Fragile network
Sender:aalto26fw_006
Submission time:2026-10-07 16:58:20 +0300
Language:C++ (C++20)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.01 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.05 sdetails
#7ACCEPTED0.07 sdetails
#8ACCEPTED0.07 sdetails
#9ACCEPTED0.06 sdetails
#10ACCEPTED0.06 sdetails
#11ACCEPTED0.01 sdetails
#12ACCEPTED0.01 sdetails
#13ACCEPTED0.01 sdetails
#14ACCEPTED0.03 sdetails
#15ACCEPTED0.01 sdetails
#16ACCEPTED0.01 sdetails
#17ACCEPTED0.01 sdetails
#18ACCEPTED0.01 sdetails
#19ACCEPTED0.01 sdetails
#20ACCEPTED0.01 sdetails
#21ACCEPTED0.01 sdetails

Code

#include<bits/stdc++.h>
//#include<unordered_set>
// #pragma GCC optimize("Ofast")
using namespace std;
#define int long long
#define die(x) return cout << x << endl, 0
#define FI first
#define SE second
#define all(o) o.begin(), o.end()
#define endl '\n'
#define IOS ios::sync_with_stdio(0), cin.tie(0)
#define FILE freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout)
#define SZ(x) ((int)(x).size())
#define PB push_back
#define PF push_front
#define POB pop_back
#define POF pop_front
#define MP make_pair
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef map<int,int> mpi;
typedef set<int> sti;
typedef vector<pii> vii;
typedef map<pii,int> mpii;
typedef set<pii> stii;
typedef long double ld;
typedef long long ll;
int gcd(int x,int y){ return (!y ? x : gcd(y, x%y)); }
int power(int x, int y) { return (!y ? 1 : power(x, y / 2) * power(x, y / 2) * (y % 2 ? x : 1)); }
int to_int(string sconvert){stringstream geek(sconvert);int xconvert = 0; geek >> xconvert; return xconvert;}
int fastMax(int x, int y) { return (((y-x)>>(32-1))&(x^y))^y; }
int fastMin(int x, int y) { return (((y-x)>>(32-1))&(x^y))^x; }
const int MAXN=2e5+30,MAX_LOG=30,MOD=1e9+7,INF=1e17;
const double PI = acos(-1);
int mod(int x) { return (x % MOD + MOD) % MOD; }
int n, m, q;

// int a[MAXN];
// int pos[MAXN];
// int dist_to[MAXN];

// int used_val[MAXN];
// void dijkstra(int src){
//     for (int i = 0; i < MAXN; i++){
//         dist_to[i] = INF;
//     }
    
//     priority_queue<pii, vector<pii>, greater<pii> > q;
//     dist_to[src] = 0;
//     q.push(make_pair(0, src));

//     while(!q.empty()){
//         int curr_dist = q.top().first;
//         int curr = q.top().second;
//         q.pop();

//         if(curr_dist != dist_to[curr]){
//             continue;
//         }

//         if(curr == n){
//             break;
//         }

//         if(curr < n && dist_to[curr + 1] > curr_dist + 1){
//             dist_to[curr + 1] = curr_dist + 1;
//             q.push(make_pair(dist_to[curr + 1], curr + 1));
//         }

//         int val = a[curr];
//         if(!used_val[val]){

//             used_val[val] = true;

//             for(int i = val; i <= n; i += val){
//                 int nxt = pos[i];
//                 if(dist_to[nxt] > curr_dist + 1){
//                     dist_to[nxt] = curr_dist + 1;
//                     q.push(make_pair(dist_to[nxt], nxt));
//                 }
//             }
//         }
//     }
// }

vi g[MAXN];
int visited[MAXN];
int deg[MAXN];
int src;
void dfs(int v, vi &order){
    visited[v] = 1;
    for(int u:g[v]){
        if(!visited[u]){
            dfs(u, order);
        }
    }
    if(deg[v] == 1  && v!=src){
    order.PB(v);
    }
}

int MAIN(){
    cin>>n;
    for(int i=1; i <= n-1; i++){
        int u,v;
        cin>>u>>v;
        deg[u]++;
        deg[v]++;
        g[u].PB(v);
        g[v].PB(u);
    }
    for (int i = 1; i <= n; i++){
        if(deg[i] > 1){
            src = i;
            break;
        }
    }
    vi orders;
    dfs(src, orders);

    int leaf_cnt = (int) orders.size();
    int ans = (leaf_cnt + 1) / 2;
    cout<<ans<<endl;
    for(int i = 0; i < ans; i++){
        cout<<orders[i] << ' ' << orders[(i + ans) % leaf_cnt]<<endl;
    }
    
    
    return 0;
}

int32_t main(){
    IOS;
    int t=1;
    //cin>>t;
    while(t--)MAIN();
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
10
1 5
1 7
1 8
1 3
...

correct output
5
5 2
7 9
8 6
3 10
...

user output
5
5 10
7 6
8 9
3 2
...

Test 2

Verdict: ACCEPTED

input
10
4 5
3 4
2 3
9 10
...

correct output
1
10 1

user output
1
10 1

Test 3

Verdict: ACCEPTED

input
10
1 8
1 3
3 5
5 7
...

correct output
3
7 10
8 2
1 9

user output
3
8 10
7 2
9 8

Test 4

Verdict: ACCEPTED

input
10
1 5
3 7
2 10
3 8
...

correct output
3
10 8
6 4
5 9

user output
3
5 9
6 8
10 4

Test 5

Verdict: ACCEPTED

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

correct output
3
8 7
10 9
1 6

user output
3
10 7
8 9
6 10

Test 6

Verdict: ACCEPTED

input
100000
1 56967
1 56618
1 42321
1 82550
...

correct output
50000
56967 16911
56618 39942
42321 99902
82550 2538
...

user output
50000
56967 46430
56618 85385
42321 63652
82550 57453
...

Test 7

Verdict: ACCEPTED

input
100000
92297 92298
23511 23512
68057 68058
65434 65435
...

correct output
1
100000 1

user output
1
100000 1

Test 8

Verdict: ACCEPTED

input
100000
17747 97512
10397 12053
679 6975
4013 14565
...

correct output
25057
92881 76094
20353 87429
16069 96487
71186 52809
...

user output
25057
92881 93883
20353 50694
76094 75207
16069 59396
...

Test 9

Verdict: ACCEPTED

input
100000
72941 72942
11232 11233
73464 73465
30042 30043
...

correct output
489
16423 85168
20707 94190
36505 54940
96411 44067
...

user output
489
1 9575
21977 30610
4831 33327
5346 20050
...

Test 10

Verdict: ACCEPTED

input
100000
31451 31452
7473 7474
24056 24057
85181 85182
...

correct output
51
25638 2983
87594 87371
92001 50610
46744 100000
...

user output
51
63319 54839
64101 36649
25638 42465
42311 27226
...

Test 11

Verdict: ACCEPTED

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

correct output
2
2 6
4 10

user output
2
2 6
4 10

Test 12

Verdict: ACCEPTED

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

correct output
2
4 7
3 6

user output
2
3 6
4 7

Test 13

Verdict: ACCEPTED

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

correct output
2
3 6
2 5

user output
2
2 5
3 6

Test 14

Verdict: ACCEPTED

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

correct output
16385
34 36
40 42
35 41
48 50
...

user output
16385
2 32799
33 32800
34 32801
35 32802
...

Test 15

Verdict: ACCEPTED

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

correct output
2
9 11
8 10

user output
2
8 10
9 11

Test 16

Verdict: ACCEPTED

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

correct output
2
5 7
4 6

user output
2
4 6
5 7

Test 17

Verdict: ACCEPTED

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

correct output
2
5 7
4 6

user output
2
4 6
5 7

Test 18

Verdict: ACCEPTED

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

correct output
3
8 7
10 9
1 6

user output
3
10 7
8 9
6 10

Test 19

Verdict: ACCEPTED

input
7
1 2
1 5
2 3
2 6
...

correct output
2
6 7
3 4

user output
2
3 4
6 7

Test 20

Verdict: ACCEPTED

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

correct output
3
4 7
6 8
1 5

user output
3
4 7
5 8
6 4

Test 21

Verdict: ACCEPTED

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

correct output
3
9 8
6 10
3 7

user output
3
6 3
9 7
8 10