CF 1581B Diameter of Graph 题解

题面:

给定n个顶点,m条边,任意两点并且最大距离小于k,两个顶点只能连一条边,询问是否能构造出这样的图型

思路:

1.n = 1时进行特判,只有k>1时成立

2. m = n(n-1)/2时,是完全图,只有k>2时成立

完全图:完全图_百度百科 (baidu.com)

3.n-1 <= m < n(n-1)/2时,对于m = n-1此时为菊花图,k需要满足 k > 3,n-1 < m < n(n-1)/2时为菊花图外有连结的点,此时k > 3

代码:

#include<bits/stdc++.h>
using namespace std;
int main() {
    int t;
    scanf("%d", &t);
    while(t--)
    {
        long long n, m, k;
        bool flag;
        scanf("%lld%lld%lld", &n, &m, &k);
        if(m < n-1 || m > n*(n-1)/2) flag = false;
        else if(n==1&&m==0&&k>1) flag = true;
        else if(m == n*(n-1)/2 && k > 2) flag = true;
        else if(n-1 <= m && m < n*(n-1)/2 && k > 3)  flag = true;
        else flag = false;

        if(flag) printf("YES\n");
        else printf("NO\n");
    }
    
    return 0;
}

 

posted on 2023-01-11 18:42  玛卡巴卡要ac  阅读(44)  评论(0)    收藏  举报

导航