Codeforces Round #601 (Div. 2) B Fridge Lockers
2024-09-06 20:07:43
//题目要求的是每一个点最少要有两条边连接,所以可以先构成一个环。然后再把剩余的最短的边连接起来
#include<iostream>
#include<algorithm>
using namespace std ;
const int N=;
int n,m;
struct edge {
int num;
int w;
} a[N];
int T;
bool cmp(edge a,edge b) {
return a.w<b.w;
}
void solve() {
int ans=;
for(int i=; i<=n; i++) {
ans+=*a[i].w;
}
ans+=(m-n)*(a[].w+a[].w);
cout<<ans<<endl;
for(int i=; i<n; i++) cout<<i<<" "<<i+<<endl;
cout<<n<<" "<<""<<endl;
for(int i=; i<=m-n; i++) cout<<a[].num<<" "<<a[].num<<endl;
}
int main() {
cin>>T;
while(T--) {
cin>>n>>m;
for(int i=; i<=n; i++) {
cin>>a[i].w;
a[i].num=i;
}
if(n<=||m<n) {
cout<<"-1"<<endl;
continue;
}
sort(a+,a++n,cmp);
solve();
}
return ;
}
最新文章
- 作业七:团队项目——Alpha版本冲刺阶段004
- 【转】HTTP协议详解
- JS中 obj.style.left 与 obj.offsetLeft 的区别
- HDU 2256 Problem of Precision 数论矩阵快速幂
- parseInt 的第二个参数
- 《Python核心编程》 第三章 Python基础 - 练习
- [改善Java代码]使用构造函数协助描述枚举项
- (转)如何在JavaScript与ActiveX之间传递数据3
- MLlib 编程指导-spark-1.2.0
- OpenRisc-44-or1200的pipeline整体分析
- python 要掌握面向对象,你得会做这些题吗?
- JAVA 数组作为方法返回值—返回地址
- 一个WPF只能输入数字的行为。
- ATM-简单SQL查询
- C现代编程
- 面向对象(static关键字的特点)
- MyEclipse 智能提示设置
- HDU2481 Toy
- Ubuntu 开机引导文件 /etc/default/grub
- 关于特殊目录如com null无法删除的处理办法