[ブラシ] [タイトル]メッセージンググラフ理論

件名の説明:

n個の点、Nエッジ、最小リングを見つけます

 

まず、我々は、少なくとも一つの環、M及びM点側(n個の点のより大きなパターンに分けて接続に従って)ことを知っています

リング上そうおそらく、その後、変形しています

 

 そこで、我々は、ポイントを選択することができ、リングのエンドポイントの1つに到達するためにリング、および二回を入力することができ、

ループの長さNWは - (DFN [ST] -1)

 

環が二方向に入力することができるので、直接還元それほど確かではない、(鎖の長さは、点を含むことになる)、なお

 

そして、あなたは快適なコードを書くことができます

書式#include <cstdioを> 
する#include <cstdlib> 
書式#include <アルゴリズム> 
 使用して 名前空間をSTD。

int型nは、ANS、CNT。
CONST  INT N = 2E5 + 3 INT NX [N]、STP [N]。

ボイド BFS(INT ST)
{ 
    int型 MN = CNT。
    しばらく(!STP [ST])
        STP [ST] = ++ CNT、ST = NX [ST]。
    もし(STP [ST]> MN) 
        ANS =分(ANS、CNT-STP [ST] + 1 )。
} 

int型のmain()
{ 
    scanf関数(" %のD "、&​​N); ANS = N。
    以下のためにINT iが= 1 ; I <= N; I ++ 
        のscanf(" %dの"、およびNX [I])。
    
    以下のためにint型私は= 1 ; I <= N; I ++ の場合(!STP [i])と
            BFS(I); 
    printf(" %dの\ n " 、ANS)。
    
    リターン 0 ; 
}

 

 

おすすめ

転載: www.cnblogs.com/xwww666666/p/11821582.html