Content

\(\textsf{CQXYM}\) 想要构造一个包含 \(n\) 个点和 \(m\) 条边的无向连通图,并且他希望这个图满足下列条件:

  • 该图中不存在重边和自环。也就是说,一条边应该连接两个不同的顶点,且两个点之间最多只能连一条边。
  • 该图的直径严格小于 \(k-1\)。

定义:

  • 一个图中两个节点之间的距离是以这两个点为端点的路径经过的最小边数。
  • 一个图的直径是任意两点之间距离的最大值。

\(\textsf{CQXYM}\) 想知道他能不能够造出这样一个图。由于他还忙于其他事情,于是就把这个任务交给了你。

数据范围:\(t\) 组数据,\(1\leqslant t\leqslant 10^5\),\(1\leqslant n\leqslant 10^9\),\(0\leqslant m,k\leqslant 10^9\)。

Solution

非常牛的一道分类讨论题。

首先,任何一个图的直径最少是 \(0\)(当且仅当 \(n=1\) 时成立),因此有 \(k-1>0\Rightarrow k>1\)。因此只要 \(k\leqslant 1\),就一定不能构造出满足题目要求的图,排除掉这一类。

排除掉这一类,我们再来看 \(n=1\) 时的情况,此时,由于图不存在重边和自环,因此必须要满足 \(m=0\)。所以当 \(n=1\) 的时候只需要判断是否有 \(m=0\) 成立。

然后就到了关键的 \(n>1\) 这一部分了。众所周知,一个 \(n\) 个点的图要变成联通的,最少需要 \(n-1\) 条边(此时它是一棵树),而且要保证不存在重边和自环的话,由于每个点最多能向 \(n-1\) 个点连边,但是不难发现,这样算的话每条边会重复计算 \(2\) 次。因此,满足条件的 \(n\) 个点的图最多边数为 \(\frac {n(n-1)}2\)。因此可以首先排除 \(m\) 不在 \([n-1,\frac{n(n-1)}2]\) 这个区间内的情况,此时一定不能构造出满足题目要求的图。

然后我们再分成 \(m\in[n-1,\frac{n(n-1)}2)\) 和 \(m=\frac{n(n-1)}2\) 这两个部分来讨论。

首先,我们来看,这是 \(m=n-1\) 的时候能够构造出来的直径最短的图的例子。

这种一个点连向其他所有点的树,我们称之为菊花图。可以看到,菊花图的直径为 \(2\),而非完全图不能做到一个点可以仅通过一条边到达其他点,因此,当 \(m\in[n-1,\frac{n(n-1)}2)\) 时,直径最小是 \(2\)。对应可以算出 \(2<k-1\Rightarrow k>3\)。

而当 \(m=\frac{n(n-1)}2\) 的时候,此时图变成了完全图,可以做到一个点仅通过一条边到达其他点,因此其直径为 \(1\),对应可以算出 \(1<k-1\Rightarrow k>2\)。

对应情况分类讨论判断即可通过此题。

Code

namespace Solution {
iv Main() {
MT {
ll n, m, k;
read(n, m, k);
if(n == 1) {
if(!m && k >= 2) YES; //赛时由于这里没有写 k >= 2 惨遭暴毙
else NO;
}
else if(m < n - 1) NO;
else if(m >= n - 1 && m < n * (n - 1) / 2) {
if(k <= 3) NO;
else YES;
} else if(m == n * (n - 1) / 2) {
if(k <= 2) NO;
else YES;
} else NO;
}
return;
}
}

CF1581B Diameter of Graph 题解的更多相关文章

  1. 【HDOJ】1706 The diameter of graph

    这么个简单的题目居然没有人题解.floyd中计算数目,同时注意重边. /* 1706 */ #include <iostream> #include <string> #inc ...

  2. POJ 1737 Connected Graph 题解(未完成)

    Connected Graph Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3156   Accepted: 1533 D ...

  3. [Leetcode Week3]Clone Graph

    Clone Graph题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/clone-graph/description/ Description Clon ...

  4. 【Lintcode】137.Clone Graph

    题目: Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. ...

  5. CodeForces 715B Complete The Graph 特殊的dijkstra

    Complete The Graph 题解: 比较特殊的dij的题目. dis[x][y] 代表的是用了x条特殊边, y点的距离是多少. 然后我们通过dij更新dis数组. 然后在跑的时候,把特殊边都 ...

  6. 算法与数据结构基础 - 图(Graph)

    图基础 图(Graph)应用广泛,程序中可用邻接表和邻接矩阵表示图.依据不同维度,图可以分为有向图/无向图.有权图/无权图.连通图/非连通图.循环图/非循环图,有向图中的顶点具有入度/出度的概念. 面 ...

  7. ACM - 最短路 - CodeForces 295B Greg and Graph

    CodeForces 295B Greg and Graph 题解 \(Floyd\) 算法是一种基于动态规划的算法,以此题为例介绍最短路算法中的 \(Floyd\) 算法. 我们考虑给定一个图,要找 ...

  8. [Python] 弗洛伊德(Floyd)算法求图的直径并记录路径

    相关概念 对于一个图G=(V, E),求图中两点u, v间最短路径长度,称为图的最短路径问题.最短路径中最长的称为图的直径. 其中,求图中确定的某两点的最短路径算法,称为单源最短路径算法.求图中任意两 ...

  9. 算法与数据结构基础 - 广度优先搜索(BFS)

    BFS基础 广度优先搜索(Breadth First Search)用于按离始节点距离.由近到远渐次访问图的节点,可视化BFS 通常使用队列(queue)结构模拟BFS过程,关于queue见:算法与数 ...

随机推荐

  1. 花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘

    本文所有内容均节选自<设计模式就该这样学> 序言 Design Patterns: Elements of Reusable Object-Oriented Software(以下简称&l ...

  2. selenium定位元素方法汇总

    #打开网页前三步 from selenium import webdriver driver=webidriver.Chrome() driver.get("https://www.baid ...

  3. DotNetty实现WebSocket的简单使用

    工作中项目是物联网项目的,管理平台又是bs架构. 如果用 Socket 的话,Web 端还需要转发,就全部统一采用了 WebSocket . DotNet 平台上的 WebSocket 实现有很多种, ...

  4. CF1368F Lamps on a Circle

    思考我们一定有最后一个状态是空着的灯是按照一个间隔\(k\) 只要将原来\(n\)个灯,每\(k\)个分一组,强制将最后一盏灯不选,并且第n盏灯不选,需要注意的是某一组一定会被第二个人全部关掉,那么可 ...

  5. NOIP2015 提高组] 运输计划

    码农题啊兄弟们. 随便考虑二分一下,然后发现要取一条满足性质的边. 被所有大于\(mid\)的路径都覆盖,取了之后能把他们都弄到小于\(mid\) 那就树上差分再处理一下. 写了\(180h\),老年 ...

  6. Codeforces 286E - Ladies' Shop(FFT)

    Codeforces 题面传送门 & 洛谷题面传送门 好久没刷过 FFT/NTT 的题了,写篇题解罢( 首先考虑什么样的集合 \(T\) 符合条件.我们考察一个 \(x\in S\),根据题意 ...

  7. EXCEL-如何在excel中对图片进行批量排版

    新建EXCEL->导入图片->如果每张图高度为33个单元格,共计10张图,那么将最后边的那张图(即正对着你的那一张)剪切粘贴到33*9行第一个单元格处->按F5定位"对象& ...

  8. 准确率,召回率,F值,ROC,AUC

    度量表 1.准确率 (presion) p=TPTP+FP 理解为你预测对的正例数占你预测正例总量的比率,假设实际有90个正例,10个负例,你预测80(75+,5-)个正例,20(15+,5-)个负例 ...

  9. vs2019 16.8更新之后的 C++20 协程co_yield用法

    由于搜索出来的帖子,都是老版本的实验协程,很多老的代码已经失去参考性,并且很复杂,所以就自己研究了一下. 1 #include <iostream> 2 #include <coro ...

  10. A Child's History of England.20

    CHAPTER 7 ENGLAND UNDER HAROLD THE SECOND, AND CONQUERED BY THE NORMANS Harold was crowned King of E ...