P2951 [[USACO09OPEN]非表示と非表示をシークし、シーク]

最も典型的な短絡、およびちょうど操作を少し追加し、答えを得ることができるようになります

だから、直接テンプレートを設定することができます

参照するには、特定のプログラム::

1つの#include <cstdioを>
 2の#include <キュー> // キュー固有のヘッダファイル
3。の#include <アルゴリズム>
 4。 使用した 名前空間STD;
 5  のconst  int型 N = 100005 ;
 6  INT A [N];
 7  INT N-、M、L 、SUM、ANS;
 8  INT D1 [N]、T [N]、HEAD1 [N]、Next1 [N]、W1 [N]、ADJ1 [N]、K1;
 9  BOOL F1 [N];
 10キュー< INT > Q1を; // グローバル変数を定義好む
11。 ボイド追加(INT U、int型 V){ //1の各辺の重みは、第3の可変持たないので、動作をエッジング
12れる      Next1 [++ K1] = HEAD1 [U];
 13は      HEAD1 [U] = K1;
 14      W1 [K1] = 1 ; / / それが変数T(それらの定義)に入れていない1、場合
15      ADJ1 [K1] = V;
 16  }
 17  空隙 SPFA(int型 S、INT E){ // SPFA、最短テンプレート
18がある     ためINT I = 。1 ; I <= N; I ++が。19          D1 [I] = 1。 << 30 ; // 形成無限
20は      D1 [S] = 0 ;
21は     q1.push(S)、
 22である      F1 [S] = trueに23であり     、一方(!{Q1.empty())
 24          INT TOP1 = ; q1.front()
 25          q1.pop(); // デキュー
26である          F1 【TOP1] = falseに27          のためにINT J = HEAD1 [TOP1];!J = 0 ; Jは= Next1 [J]){
 28              IF(D1 [ADJ1 [J]]> D1 [TOP1] + W1 [J] ){ // 緩和操作
29                  T [ADJ1 [J] ++ ;
 30                  D1 [ADJ1 [J] = D1 [TOP1] + W1 [J];
 31れます                 もし(!F1 [ADJ1 [J]]){
 32                      q1.push(ADJ1 [J])。
33の                      F1 [ADJ1 [J] = 34                  }
 35              }    
 36          }            
 37      }
 38  }
 39  INT メイン(){
 40      // freopenは( "hideseek.in"、 "R"、STDIN)。
41      // freopenは( "hideseek.out"、 "W"、STDOUT);不要在意... 
42      のscanf(" %D%dの"、&​​N、&M)。// 读入
43      のためのint型 I =。1 ; I <= M; I ++ ){
 44は         int型;、Y X
 45          scanfの(" %のDの%のD "、およびX&Y);
 46である         追加(X、Y);
 47          追加(Y、X); // それは無向グラフであるため、2追加するために、操作をエッジング
48      }
 49      SPFAを(1、N-); // の呼び出し
50      のためにINT I = 1 ; I <= N; I ++ ){
 51が         IF(D1 [I] > L){ // 点が今よりも大きく表示された場合、交換
52は              L = D1 [I];
 53は              ANS = I;
 54であります             = SUM 1。;
 55          }
 56である         {
 57は             IF {(D1 [I] == L)// 追加するように
58                  SUM ++を;
 59              }
 60          }
 61れる     }
 62である      のprintf(" %D%D%D \ N- "、ANS 、L、SUM)が; // 出力
63は、     戻り 0 ;
 64 }

実際には、トラブルのないアナログキューのかなりの配列は、私だけの確実性よりも、変更、および書き込みか、ご自分のサイトを作成するにはあまりにも怠惰な、テンプレートを適用します

それ。新人はそれについてボーを開くために奨励されています~~

おすすめ

転載: www.cnblogs.com/hahaha2124652975/p/11123285.html