グラフ理論のアルゴリズム実装ノート

1. 隣接行列を用いたDFS(再帰実装) class GraphStructure { public: GraphStructure(int nodes); void addConnection(int src, int dst); void traverseDFS(int startNode); private: int nodeCount; vector<vector<int>> adjacencyMatrix; vector<bool> visitedFlags; void dfsRecursive(int current); }; GraphStruc ...

6月15日 20:13 投稿

LeetCode問題:最小反転操作回数

問題 2612. 最小反転操作回数 整数 n と、範囲 [0, n - 1] 内の整数 p が与えられます。これらは、長さが n でインデックスが 0 から始まる配列 arr を表します。この配列では、インデックス p の位置だけが 1 で、他のすべての要素は 0 です。 同時に、整数配列 banned も与えられます。この配列には、配列内のいくつかの位置が含まれています。banned の第 i 個 ...

6月13日 20:44 投稿

01迷路の探索と到達可能セル数の計算

問題概要 n×nのサイズの迷路があり、各セルには0または1が書かれています。現在位置が0の場合、上下左右の隣接する4つのセルのうち1のセルに移動できます。同様に、現在位置が1の場合は、隣接する0のセルに移動可能です。この迷路に対して、指定された開始位置から移動可能なセルの総数(開始位置を含む)を求める問題です。 入力形式 1行目:正整数 n, m(迷路のサイズと ...

6月2日 22:01 投稿

幅優先探索による連結成分と最短経路の解析

幅優先探索(BFS)は、始点から順に隣接ノードを訪問し、各レベルのノードをすべて処理してから次の深さへ進むアルゴリズムです。この手法は、グリッド上の連結領域の数え上げや迷路における最短ステップ数の算出に適しています。 1のブロック数をカウントする例 #include <iostream> #include <queue> using namespace std; const int SIZE = 100; int rows ...

6月2日 19:01 投稿

AtCoder Beginner Contest 387 参加記録と解法まとめ

A - Happy New Year 2025 2つの整数 $A$ と $B$ が与えられます。$(A + B)^2$ を出力するだけの問題です。計算結果が整数型の範囲に収まるか注意が必要ですが、今回の制約では問題ありません。 #include <iostream> using namespace std; void solve() { long long val1, val2; if (cin >> val1 >> val2) { long long combined = val ...

5月30日 22:13 投稿

二叉树における探索・判定・再帰的構築のアルゴリズム実装

最下段の左端ノード値の取得 指定された二叉樹に対して、最下層に位置する左端のノードが保持する数値を特定します。幅優先探索(BFS)を用いて木を階層ごとに処理し、各レベルの走査開始時に最初に訪問するノードを記録します。探索が完全に終了した時点で最後に記録された値が、要件を満たす最下段左端ノードの値となります。このアプローチにより、キューの順序を意図的 ...

5月20日 04:52 投稿