ゲームは私の恐怖になり51nod
私はBFS水を使用していた高設定シミュレーションゲームを向上させますか??VIS [X]ごとに空にし、自閉症書き込まspfa 10にバーストにつながっ
多分私は私が待っていたので、とても水の上にI Xiandiu BFS試験のデータも多くの質問を書くことができます今日はソリューションを走った右側のアルゴリズムについては、今日変更します...
// 边权是1那BFS の#include <ビット/ STDC ++ H> 使用して名前空間STDを、 テンプレート <型名T>インラインボイドリード(T&X){ X = 0 。 T F = 1、CH = GETCHAR()。 一方、(!isdigit(CH)){ 場合(CH == ' - ')、F = - 1。CH = GETCHAR();} ながら(isdigit(CH))X =(X << 1)+(X << 3)+(CH ^ 48)、CH = GETCHAR()。 X * = F。 } のconst int型 N = 1100 ; INTのN、M、TOT、VIS [N]、LIN [N]、DIS [N]。 構造体GG { int型の次のY、。 } [ 100100 ]。 構造体ピンク{ int型X、Y。 } S [ 100100 ]。 インラインボイド追加(int型のx、int型のY){ [ ++ TOT] .Y = Y。 【TOT] .next = LIN [X]。 LIN [X] = TOT。 } インラインINT BFS(INT S、INT T){ キュー <int型 > Q; memsetの(VIS、0、はsizeof (VIS))。 一方、(q.size())q.pop(); q.push(S); VIS [S] = 1 ; DIS [S] = 0 ; 用(int型 I = LIN [S]; I; iは= [I] .next){ int型、Y = [I] .Y。 もし(Yの==のT)続けます。 q.push(Y)、DIS [Y] = 1、VIS [Y] = 1 。 } q.pop()。// 一方(q.size()){ int型のx = q.front(); q.pop()。 ために(int型 ; I; iは= LIN [x]はiは= [I] .next){ int型、Yは= .Y [i]は、 もし(VIS [Y])続けます。 場合(Yの== tは)戻り DISを[X] + 1 。 DIS [Y] = DIS [X] + 1 。 VIS [Y] = 1 。 q.push(Y)。 } } リターン - 1 。 } int型のmain(){ // freopenは( "1.in"、 "R"、STDIN)。 freopenは(" railway.in "、"R "STDIN); freopenは(" railway.out " " W 」、STDOUT); )N(読み取り;(m)を読み出す。ため(int型 I = 1 ; I <= M; iが++ ){ [(Sを読み取りますI] .X); [i]は.Y)(Sを読み出す (S [i]が.X追加、S [i]は.Y); } ため(int型 iは= 1 ; I <= M; iが++ ){ COUT << BFS(S [i]が.X、S [i]は.Y)<< ' ' ; } 戻り0 ; }
後で、我々はそれを行う方法の範囲にマッピングされないために必要なものの二次元平面であることが判明したおそらく、私は、ツリーラインを考えると、ツリーライン上の本を書いて考えます
私たちは、y軸の座標xに二つの部分に矩形をマップ大きな長方形として2つの矩形の高さと小さな四角形私たちは、このオフラインを行うことを検討に対応したいです
この時点で、それを2N 2mのクエリおよび修正動作セグメントツリーメンテナンス操作ケースの問題は、lenがこの間隔の長さが変更されていることを示し、現在の間隔を表す修飾合計が面積となります
クエリーの答えがlenされる* X和
おそらく、非常に抽象的には、少なくとも私はそう思います。
ちょっと暴力的な検索の完全な配列qwq???しかし、我々は非常に素晴らしい自然が奇数ビットと偶数ビットのために、あるき11で割り切れました