【题目链接】:http://codeforces.com/contest/755/problem/E

【题意】



给你n个节点;

让你在这些点之间接若干条边;构成原图(要求n个节点都联通)

然后分别求出原图和补图(补图也要求联通)的直径r1和r2

然后要求min(r1,r2)==k;

让你求出符合要求的原图的m条边;

【题解】



有个结论;

如果图G的直径超过了3,则它的补图的直径会比3小;

且k=1的时候,是无解的;

因为k=1就说明一张图上只有一条边;

n=2的时候,另外一张图上没边,最小值为0;

n>=3的时候,一张图上没有联通n个点;为-1;

综上k=1的时候无解;

再加上上面那个结论;

可知只有当K=2或K=3的时候可能有解;

①

对于K=2的情况;

只有n>=5的时候才有解;

这个时候;

1-2-3-…-n全部连起来就可以了;

即类似样例2

②

对于K=3的情况;

当N=4的时候

连一条链

1-2-3-4就是符合要求的答案;

因为补图中的

2-3这条路径的最短距离为3;

就以这个为基础;

对于N>=5的情况;

从N=4的情况一个节点一个节点地加;

然后维护那个2-3的最短距离为3

但是你新加了一个点x;

如果不在2和x或3和x之间连一条边的话

2和3之间的最短路径就变成2了;

因为可以2->x->3了

所以

1..3连在一起变成一条链;

然后3和剩余的n-3个孤立的点都分别连一条边;



【Number Of WA】



1



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define ps push_back
#define fi first
#define se second
#define rei(x) cin >> x
#define pri(x) cout << x
#define ms(x,y) memset(x,y,sizeof x) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 110; int n,k; int main()
{
//freopen("F:\\rush.txt","r",stdin);
ios::sync_with_stdio(false);
rei(n),rei(k);
if (k>=4 || k <=1)
return pri(-1<<endl),0;
if (k==2)
{
if (n<=4)
return pri(-1<<endl),0;
if (n>=5)
{
pri(n-1<<endl);
rep1(i,1,n-1)
pri(i<<' '<<i+1<<endl);
}
return 0;
}
if (k==3)
{
if (n<=3)
return pri(-1<<endl),0;
pri(n-1<<endl);
rep1(i,1,3)
pri(i<<' '<<i+1<<endl);
rep1(i,5,n)
pri(3<<' '<<i<<endl);
}
//printf("\n%.2lf sec \n", (double)clock() / CLOCKS_PER_SEC);
return 0;
}

【codeforces 755E】PolandBall and White-Red graph的更多相关文章

  1. 【codeforces 755D】PolandBall and Polygon

    time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  2. 【codeforces 755B】PolandBall and Game

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  3. 【codeforces 755A】PolandBall and Hypothesis

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  4. 【codeforces 755C】PolandBall and Forest

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  5. 【codeforces 755F】PolandBall and Gifts

    [题目链接]:http://codeforces.com/contest/755/problem/F [题意] n个人; 计划是每个人都拿一个礼物来送给一个除了自己之外的人; 且如果一个人没有送出礼物 ...

  6. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  7. 【codeforces 234F】Fence

    [题目链接]:http://codeforces.com/problemset/problem/234/F [题意] 你有n块板要凃油漆; 然后每块板有高度h[i];(宽度都为1) 然后每块板只能凃同 ...

  8. 【27.91%】【codeforces 734E】Anton and Tree

    time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  9. 【codeforces 758B】Blown Garland

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

随机推荐

  1. 【Codevs1322】单词矩阵

    Position: http://codevs.cn/problem/1322/ List Codevs1322 单词矩阵 List Description Input Output Sample I ...

  2. TensorFlow alexnet在华为Mate10上运行方法

    我使用的caffe模型:https://github.com/BVLC/caffe/tree/ea455eb29393ebe6de9f14e88bfce9eae74edf6d/models/bvlc_ ...

  3. hibernate缓存机制详细分析(一级、二级、查询缓存,非常清晰明白)

    本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题. 随笔虽长,但我相信 ...

  4. Oh,mygoddess

    很早的时候就看了这一道题目 , 当时不会做 , 现在 边听歌边写无压力 ........ 题意 : 光辉骑士 一直都在 迷宫的右上角 , 第一行给你迷宫的规格 , 下面是迷宫 "O" ...

  5. scrapy安装及基本使用

    前端html, css, js 相关知识 数据库运用 http协议的了解 前后台联动 蜘蛛中间件.下载中间件 下载中间件的地方可以写各种反爬的策略 1.使用pip安装, pip3 install sc ...

  6. ASP.NET MVC5 之数据迁移

    SQL 中新建数据库 DataSystem 1.web.config 数据库连接字符串: <add name="APPDataConnection" connectionSt ...

  7. Aspose Cells dll 实现数据简单下载

    Workbook workbook = new Workbook(); //工作簿                     Worksheet sheet = workbook.Worksheets[ ...

  8. drawable的文件名大写

    drawable的文件名大写导致的R文件消失!!!1

  9. 从如何停掉 Promise 链说起

    在使用Promise处理一些复杂逻辑的过程中,我们有时候会想要在发生某种错误后就停止执行Promise链后面所有的代码. 然而Promise本身并没有提供这样的功能,一个操作,要么成功,要么失败,要么 ...

  10. activity间传递参数

    传递值对象 值对象可以理解为自定义的数据类型对象. 为了完成这个知识点的讲解,先来创建一个User类型的类,它有name和age两个属性,然后请添加getter/setter方法,构造方法等基本方法. ...