OJ上一道最短路径的题(小弟我用dijkstra算法解答),总是wrong answer求大牛解答
OJ上一道最短路径的题(我用dijkstra算法解答),总是wrong answer求大牛解答


题目如上,我的代码如下,用到的算法Dijkstra
题目如上,我的代码如下,用到的算法Dijkstra
#include <iostream>
using namespace std;
const int minDist = 0;
const int maxDist = -1;
const int maxArray = 205;
void dijkstra(int N, int v, long long *dist, int f[][maxArray]) {
bool s[maxArray];
for (int i = 0; i < N; ++i) {
dist[i] = f[v][i];
s[i] = false;
//cout << i << "->" << dist[i] << ' ';
}
//cout << endl;
dist[v] = 0;
s[v] = true;
for (int i = 1; i < N; i++) {
long long temp = 2000000;
int u = v;
for (int j = 0; j < N; ++j) {
if (!s[j] && dist[j] < temp && dist[j] != maxDist) {
temp = dist[j];
u = j;
}
}
//cout << "Time: " << i << ' ' << u << "->" << temp << endl;
s[u] = true;
for (int j = 0; j < N; ++j) {
if (!s[j] && f[u][j] != maxDist) {
long long newDist = dist[u] + f[u][j];
//cout << newDist << " " << dist[j] << endl;
dist[j] = dist[j] == maxDist ? newDist : dist[j];
dist[j] = dist[j] < newDist ? dist[j] : newDist;
}
}
}
}
int main() {
int N, M;
int f[maxArray][maxArray];
long long dist[maxArray];
int S, T;
while (cin >> N) {
cin >> M;
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++) {