QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#372074#2437. Wireless is the New FiberUFRJ#AC ✓288ms785824kbC++202.1kb2024-03-30 21:00:582024-03-30 21:01:40

Judging History

This is the latest submission verdict.

  • [2024-03-30 21:01:40]
  • Judged
  • Verdict: AC
  • Time: 288ms
  • Memory: 785824kb
  • [2024-03-30 21:00:58]
  • Submitted

answer

#include "bits/stdc++.h"

using namespace std;
using lint = int64_t;

int main(void) {
    cin.tie(nullptr)->sync_with_stdio(false);
    int n, m; cin>>n>>m;
    vector<int> degree(n);
    for(int e =0; e<m; e++){
        int u,v;
        cin>>u>>v;
        degree[u]++;
        degree[v]++;
    }
    //sum = 2*(n-1) - n = n-2
    const int L = n-2;
    vector<vector<int>> link(n+1, vector<int>(L+1, -1));
    vector<vector<int>> dp(n+1, vector<int>(L+1, -2*n));
    dp[0][0] = 0;
    int maxi = 0;
    for(int i =0; i <n; i++){
        dp[i+1] = dp[i];
        link[i+1] = link[i];
        const int d = degree[i] - 1;
        for(int tam = L; tam >= d; tam--){
            if(dp[i+1][tam] < dp[i][tam-d] + 1){
                dp[i+1][tam] = dp[i][tam-d] + 1;
                link[i+1][tam] = i;
            }
            maxi = max(maxi, dp[i+1][tam]);
        }
    }

    vector<int> new_degree(n, 1);
    vector<bool> selected(n);
    for(int k = 0; k <=n; k++) for(int i = 0; i <=L; i++) if(dp[k][i] == maxi){
        int cur = i;
        int l = link[k][i];
        int answer = dp[k][i];
        while(l != -1){
            selected[l] = true;
            new_degree[l] = degree[l];
            cur = cur - (degree[l] - 1);
            l = link[l][cur];
        }
        for(int j =0; j < n; j++){
            if(!selected[j]){
                selected[j] = true;
                new_degree[j] += n-2-i;
                break;
            }
        }

        vector<int> ids(n);
        iota(ids.begin(), ids.end(), 0);
        sort(ids.begin(), ids.end(), [&](int a, int b){
            return new_degree[a] > new_degree[b];
        });
        cout<<n-answer<<"\n";
        cout<<n<<" "<<n-1<<"\n";
        for(int l = 0, r = 1; l < n; l++){
            const int a = ids[l];
            while(new_degree[a]){
                new_degree[a]--;
                cout<<a<<" "<<ids[r]<<"\n"; 
                new_degree[ids[r]]--;
                r++;
            }
        }

        exit(0);
    }


    
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3600kb

Test #2:

score: 0
Accepted
time: 0ms
memory: 3788kb

Test #3:

score: 0
Accepted
time: 0ms
memory: 3592kb

Test #4:

score: 0
Accepted
time: 0ms
memory: 3552kb

Test #5:

score: 0
Accepted
time: 0ms
memory: 3640kb

Test #6:

score: 0
Accepted
time: 0ms
memory: 3616kb

Test #7:

score: 0
Accepted
time: 0ms
memory: 3840kb

Test #8:

score: 0
Accepted
time: 0ms
memory: 3708kb

Test #9:

score: 0
Accepted
time: 0ms
memory: 3672kb

Test #10:

score: 0
Accepted
time: 1ms
memory: 3676kb

Test #11:

score: 0
Accepted
time: 1ms
memory: 3684kb

Test #12:

score: 0
Accepted
time: 1ms
memory: 3660kb

Test #13:

score: 0
Accepted
time: 0ms
memory: 11536kb

Test #14:

score: 0
Accepted
time: 0ms
memory: 11452kb

Test #15:

score: 0
Accepted
time: 0ms
memory: 11524kb

Test #16:

score: 0
Accepted
time: 6ms
memory: 11536kb

Test #17:

score: 0
Accepted
time: 3ms
memory: 11476kb

Test #18:

score: 0
Accepted
time: 13ms
memory: 11556kb

Test #19:

score: 0
Accepted
time: 257ms
memory: 785824kb

Test #20:

score: 0
Accepted
time: 288ms
memory: 785728kb

Test #21:

score: 0
Accepted
time: 268ms
memory: 785540kb

Test #22:

score: 0
Accepted
time: 255ms
memory: 785240kb

Test #23:

score: 0
Accepted
time: 228ms
memory: 785112kb

Test #24:

score: 0
Accepted
time: 263ms
memory: 785024kb

Test #25:

score: 0
Accepted
time: 247ms
memory: 784672kb

Test #26:

score: 0
Accepted
time: 263ms
memory: 784604kb

Test #27:

score: 0
Accepted
time: 268ms
memory: 784580kb

Test #28:

score: 0
Accepted
time: 247ms
memory: 784424kb

Test #29:

score: 0
Accepted
time: 267ms
memory: 785812kb

Test #30:

score: 0
Accepted
time: 1ms
memory: 3528kb

Test #31:

score: 0
Accepted
time: 1ms
memory: 3576kb

Test #32:

score: 0
Accepted
time: 1ms
memory: 3532kb

Test #33:

score: 0
Accepted
time: 6ms
memory: 3844kb

Test #34:

score: 0
Accepted
time: 0ms
memory: 3632kb

Test #35:

score: 0
Accepted
time: 0ms
memory: 3592kb

Test #36:

score: 0
Accepted
time: 1ms
memory: 3612kb

Test #37:

score: 0
Accepted
time: 0ms
memory: 3548kb