题解:CF1255B Fridge Lockers
思路
如果 则肯定会构造失败。
当 时,无法做到每个点的度数都大于或等于 。
反之,要想满足题意,就必须形成一个环,花费为冰箱总重量的两倍。
代码:
#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) 收藏 举报 来源