P1339 [USACO09OCT】熱波熱波[spfaボード】

ことでの不在トピックリンク入れて練習https://www.luogu.org/problem/P1339を

そこだけ6200は、まばらなグラフである一方、2500個のポイントは、あり、そしてspfaについて学ぶことにしました

直接コードにspfaボードの問題、

 

経験を学ぶこと)(少しのSTLであります

1の#include <cstdioを>
 2の#include <CStringの>
 3の#include <iostreamの>
 4の#include <アルゴリズム>
 5の#include <ベクトル>
 6の#include <キュー>
 7  使って 名前空間STDを、
8  のconst  int型 MAXN = 2550 9  のconst  int型 INF = 9999999 10  構造体ノード{
 11      INT V。// 终点
12      int型の重量; // 权值
13  }。
14ベクター<ノード> MP [MAXN]。// インデックスが出発点である
15  INT DIS [MAXN]、VIS [MAXN]; // DISチームが持っていたかどうかVIS、ターゲット長に出発点であると判断し
16  ボイド SPFA(INT SRC){
 17      のint ; Q
 18は      キュー< INT > Q;
 19      DIS [SRC] = 0 ;
 20      VIS [SRC] = 1 ;
 21である     Q.push(SRC)
 22は     、一方(!{Q.empty())
 23である          Q = Q.front();
 24          Q. POP();
 25          VIS [Q] = 0 ;
 26である         ためint型 i = 0 ; iが(MP [Q] .sizeを<); iが++ ){
 27              場合(DIS [Q] + MP [Q] [I] .weight < DIS [MP [Q] [I] .V]) {
 28の                  DIS [MP [Q] [I] .V = DIS [Q] + MP [Q] [I] .weight。
29                  であれば(!VIS [MP [Q] [I] .V]){
 30                      Q.push(MP [Q] [I] .V)。
31                      VIS [MP [Q] [I] .V] = 1 32                  }
 33              }
 34          }
 35      }
 36      リターン37  }
 38  
39  int型のmain(){
 40     int型のT、C、TS、TE;
41      CIN >> T >> C >> TS >> TE。
42      のためには、int型 I = 1 ; I <= T iは++ 43の          DIS [I] = INFと、
44      一方(C-- ){
 45          int型A、B、TMP。
46          のscanf(" %D%D%D "、&​​、&B、&TMP)。
47          MP [A] .push_back((ノード){B、TMP})。
48          MP [B] .push_back((ノード){TMP})。
49      }
 50      spfa(TS)。
51      のprintf(" %d個の\ n "プッシュ[I])。
52      リターン 0 53 }

 

おすすめ

転載: www.cnblogs.com/yoshinaripb/p/11318270.html