1. 程式人生 > 其它 >Codeforces Round #745 (Div. 2) B. Diameter of Graph

Codeforces Round #745 (Div. 2) B. Diameter of Graph


場上思路:發現存在兩種特殊情況:邊數最小的菊花樹和邊數最大的完全圖。但由於理解錯一般無向圖直徑的定義,不會處理介於菊花圖與完全圖之間的情況。此外,對於完全圖直徑為1和菊花圖直徑為2的性質理解的也不夠深刻。

改進:對於題目定義的新概念要思考,同時要注意積累特殊情況的性質(異或和、菊花圖等)。

#include<cstdio>
#include<iostream>
#define ll long long
using namespace std;
int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        ll n,m,k;
        scanf(
"%lld%lld%lld",&n,&m,&k); //特殊情況判斷 if(n==1){ if(m==0&&k>=2){ printf("YES\n"); continue; }else{ printf("NO\n"); continue; } } if(m<n-1||m>(n*(n-1
))/2||k<=2){//嚴格小於k-1,即<=k-2,1<=k-2,k=3 //完全不可能滿足條件(邊數和直徑要求) printf("NO\n"); continue; }else{ //恰好構成菊花圖 if(m==n-1&&k>=4){//4-1=3>2 printf("YES\n"); continue; }
//一部分完全,一部分為菊花圖 else if(m>n-1&&m<(n*(n-1)/2)){//不完全菊花圖 if(k>=4){ printf("YES\n"); continue; }else{ printf("NO\n"); continue; } } else if(m==(n*(n-1)/2)&&k>=3){//完全圖 printf("YES\n"); continue; }else{ printf("NO\n"); continue; } } } return 0; }