最短パス (u,v)(u,v)f(u,v)f(u,v) の昇順に数えていけばよいです。一例として以下のような方法が考えられます。

  • NN 頂点 00 辺のグラフ GG と変数 cnt=0cnt=0 を用意する。
  • x{Ci}x\in \{C_i\} について昇順に以下の操作を行う。
    1. max(CAj,CBj)=x\max(C_{A_j},C_{B_j})=x かつ頂点 AjA_j と頂点 BjB_j が連結でないような jj が存在しなければ終了する。存在すればそれらのうち一つを選び、((頂点 AjA_j を含む連結成分のサイズ)×()\times(頂点 BjB_j を含む連結成分のサイズ))cntcnt に加算した後、無向辺 (Aj,Bj)(A_j,B_j) を追加する。
    2. このとき KcntK \le cnt であれば答えは xx である。
    3. 1.に戻る