我正在尝试在 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;
}
}
}
}
}
当我尝试代码时,程序崩溃说:“表达式:向量下标超出范围”
我希望你们能帮助我,因为我无法解决这个问题!