C++ で Floryd アルゴリズムを実装しようとしています。
私はすでにこれを持っています:
a は、エッジが開始するノードを意味します。
b はエッジが終了するノードを意味します。
t はエッジの時間を意味します。
m はエッジの数を意味します。
n はノード数を意味します。
typedef pair<int,int> nodo;
vector <nodo> g[100000];
void preguntarFloyd()
{
g->clear();
int m;
int contador = 0;
cin m;
for(int k = 0; k < m ; k++)
{
int a, b, t;
cin >> a >> b >> t;
g[a].push_back(nodo(b,t));
}
for (int k = 0; k < n; k++)
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j <n; j++)
{
if(g[i][k].second + g[k][j].second < g[i][j].second )
{
g[i][j].second = g[i][k].second + g[k][j].second;
}
}
}
}
}
コードを試すと、プログラムがクラッシュして、「式: ベクトル添え字が範囲外です」と表示されます。
私はこれを解決できなかったので、皆さんが私を助けてくれることを願っています!