【题目链接】: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. Git下的冲突解决【转】

    本文转载自:http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html 冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是m ...

  2. How to: Specify the Web Server for Web Projects in Visual Studio

    https://msdn.microsoft.com/en-us/library/ms178108(v=vs.120).aspx When you run a Web project in Visua ...

  3. bzoj 1935 Tree 园丁的烦恼

    题目大意: 一些点,每次查询一个矩形内有多少个点 思路: 因为空间太大 所以不能用什么二维树状数组 需要把这些点和所有查询的矩阵的左下和右上离线下来 先离散化 然后每个子矩阵像二维前缀和那样查询 按照 ...

  4. DStream 转换操作------有状态转换操作

    import org.apache.spark.SparkConf import org.apache.spark.streaming.{Seconds, StreamingContext} obje ...

  5. Spark中统计程序运行时间

    import java.text.SimpleDateFormat import java.util.Date val s=NowDate() //显示当前的具体时间 val now=new Date ...

  6. Countries in War(强连通分量及其缩点)

    http://poj.org/problem?id=3114 题意:有n个城市,m条边,由a城市到b城市的通信时间为w,若a城市与b城市连通,b城市与a城市也连通,则a,b城市之间的通信时间为0,求出 ...

  7. P4166 [SCOI2007]最大土地面积

    传送门 首先,四边形的四个点肯定都在凸包上(别问我为什么我也不知道,感性理解一下好了) 那么我们可以求出凸包之后\(O(n^4)\)暴力枚举,据说在随机数据下凸包上的点只有\(O(logn)\)个可过 ...

  8. Gym - 101982A 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) A. Exam

    题面 题意:你和朋友一起做了n道判断题,现在你知道你们两的答案,也知道你朋友对了k个,问你至少对了几个 题解:假设你和朋友n个答案都一样,那你是不是也对了k个,假设你和朋友有1个答案不一样,是不是,你 ...

  9. [Apple开发者帐户帮助]六、配置应用服务(5.1)推送通知(APN):使用身份验证令牌与APN通信

    您可以使用一个APN签名密钥为多个应用程序验证令牌.签名密钥适用于开发和生产环境.签名密钥不会过期,但可以撤消. 首先在Xcode项目中启用推送通知.接下来创建并下载启用了APN 的私钥. 然后获取密 ...

  10. 【Codeforces866E_CF866E】Hex Dyslexia(Structure & DP)

    It's my first time to write a blog in EnglishChinglish, so it may be full of mistakes in grammar. Pr ...