1 条题解

  • 0
    @ 2026-9-1 23:44:46

    这题数据有问题atcoder已过

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    #define lowbit(x) x&-x
    const int INF=0x3f3f3f3f3f3f3f3f;
    const int N=2e3+10;
    const int M=2e6+10;
    const int mod=1e9+7;
    int n,m;
    signed main(){
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
    	cin>>n>>m;
    	if(m>(n-1)*(n-2)/2){
    		cout<<-1;
    		return 0;
    	}
    	int cnt=(n-1)*(n-2)/2-m;
    	cout<<cnt+n-1<<'\n';
    	for(int i=2;i<=n;i++){
    		cout<<1<<' '<<i<<'\n';
    	}
    	for(int i=2;i<=n;i++){
    		for(int j=i+1;j<=n;j++){
    			if(cnt==0)	return 0;
    			cout<<i<<' '<<j<<'\n';
    			cnt--;
    		}
    	}
    	return 0;
    }
    /*
    我们可以往简单的方向想先做出一个树保证连通
    1 2 1 3 1 4 1 5
    2的是(n-1)*(n-2)/2
    我们要缩成k个
    连接两个
    2 3或2 4等可以减掉1次
    */
    

    信息

    ID
    1732
    时间
    2000ms
    内存
    1024MiB
    难度
    提高
    标签
    递交数
    4
    已通过
    0
    上传者