题目链接:Diameter of Graph
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
long long n,m,k,mx,mi;//n个点,m条边,直径为k
int t;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld%lld",&n,&m,&k);
mx=(n-1)*n/2;//n个点最多有cn2条边;
mi=n-1;//n个点最少有n-1条边
if(k<2)//直径小于K-1
printf("NO\n");
else if(m>=mi&&m<mx&&k>3)
printf("YES\n");
else if(m==mx&&k>2)//如果边数等于最多的边数,
//两个定点之间的距离是路径上端点为两个节点的最小边数应大于2
printf("YES\n");
else if(n==1&&m==0)//如果有一个点,m=0
printf("YES\n");
else printf("NO\n");
}
}
//图的直径是任意两个节点之间的最大距离。
//两个节点之间的距离是路径上端点为两个节点的最小边数。