C++での切断されたグラフのBFS
切断されたグラフ は、1つ以上のノードがグラフの端点ではない、つまり接続されていないグラフです。
切断されたグラフ…
現在、Simple BFSは、グラフが接続されている場合、つまりグラフのすべての頂点にグラフの1つのノードからアクセスできる場合にのみ適用できます。上記の切断されたグラフの手法では、いくつかの法則にアクセスできないため不可能です。したがって、切断されたグラフで幅優先探索を実行するには、次の変更されたプログラムの方が適しています。
例
#include<bits/stdc++.h> using namespace std; void insertnode(vector<int> adj[], int u, int v) { adj[u].push_back(v); } void breathFirstSearch(int u, vector<int> adj[], vector<bool> &visited) { list<int> q; visited[u] = true; q.push_back(u); while(!q.empty()) { u = q.front(); cout << u << " "; q.pop_front(); for (int i = 0; i != adj[u].size(); ++i) { if (!visited[adj[u][i]]) { visited[adj[u][i]] = true; q.push_back(adj[u][i]); } } } } void BFSdisc(vector<int> adj[], int V) { vector<bool> visited(V, false); for (int u=0; u<V; u++) if (visited[u] == false) breathFirstSearch(u, adj, visited); } int main() { int V = 5; vector<int> adj[V]; insertnode(adj, 0, 23); insertnode(adj, 0, 4); insertnode(adj, 1, 2); insertnode(adj, 1, 3); insertnode(adj, 1, 4); insertnode(adj, 2, 3); insertnode(adj, 3, 4); BFSdisc(adj, V); return 0; }
出力
0 4 1 2 3
-
C++での8進数から10進数への変換のプログラム
入力として8進数を指定すると、タスクは指定された8進数を10進数に変換することです。 コンピューターの10進数は10進数で表され、8進数は0から7までの8進数で表されますが、10進数は0から9までの任意の数字にすることができます。 8進数を10進数に変換するには、次の手順に従います- 余りから右から左に数字を抽出し、それを0から始まる累乗で乗算し、(桁数)–1まで1ずつ増やします。 8進数から2進数に変換する必要があるため、8進数の基数は8であるため、累乗の基数は8になります。 指定された入力の桁にベースとパワーを掛けて、結果を保存します 乗算されたすべての値を加算して、10進数になる
-
C ++での競技コーディングにSTLを使用するBFS?
幅優先探索(BFS)トラバーサルはアルゴリズムであり、特定のグラフのすべてのノードにアクセスするために使用されます。このトラバーサルアルゴリズムでは、1つのノードが選択され、隣接するすべてのノードが1つずつ訪問されます。隣接するすべての頂点を完了すると、さらに移動して別の頂点をチェックし、隣接する頂点を再度チェックします。 競技コーディングでは、問題を非常に迅速に解決する必要があります。このアルゴリズムを実装するには、STL(C ++の標準ライブラリ)を使用します。キューデータ構造を使用する必要があります。隣接するすべての頂点がキューに追加されます。隣接するすべての頂点が完了すると、1