题解:CF1255B Fridge Lockers

思路

如果 n<3n < 3 则肯定会构造失败。

m<nm < n 时,无法做到每个点的度数都大于或等于 22

反之,要想满足题意,就必须形成一个环,花费为冰箱总重量的两倍。

代码:

#include<bits/stdc++.h>
using namespace std;
int t, n, m, a;
int main(){
    cin >> t;
    while(t --){
        cin >> n >> m;
        int sum = 0;
        for(int i = 1; i <= n; i ++){
            cin >> a;
            sum += a;//求出重量总和
        }
        sum *= 2;
        if(n < 3 || m < n){//无法形成
            puts("-1");
            continue;
        }
        printf("%d\n", sum);
        for(int i = 1; i < n; i ++) printf("%d %d\n", i, i + 1);
        printf("%d 1\n", n);//形成环
    }
    return 0;
}

posted on 2024-04-12 22:38  zhangzirui66  阅读(6)  评论(0)    收藏  举报  来源

导航