#include <iostream>
#include <cstdio>
#include <stack>
#include <stack>
#include <string>
#include <vector>
#include <algorithm>
#include <limits.h>
using namespace std;
#define MAX_SIZE 100
struct Graph
{
int vexNumber;
int vexInfo[MAX_SIZE];
int adjMatrix[MAX_SIZE][MAX_SIZE];
};
void Djistra(const Graph &G, vector<int> &shortest, int v)
{
vector<int> u(G.vexNumber, 0);
for (int i = 0; i < G.vexNumber; i++)
{
if (G.adjMatrix[v][i] > 0) //排除0
{
shortest[i] = G.adjMatrix[v][i];
}
}
u[v] = 1;
shortest[v] = 0;
for (int i = 0; i < G.vexNumber; i++)
{
int min = INT_MAX;
int w = -1;
for (int j = 0; j < G.vexNumber; j++)
{
if (min > shortest[j] && u[j] != 1)
{
min = shortest[j];
w = j;
}
}
if (w != -1)
{
u[w] = 1;
for (int m = 0; m < G.vexNumber; m++)
{
if (!u[m] && G.adjMatrix[w][m] > 0 && shortest[m] > shortest[w] + G.adjMatrix[w][m])
{
shortest[m] = shortest[w] + G.adjMatrix[w][m];
}
}
}
}
}
int main()
{
Graph G;
int num;
cin >> G.vexNumber >> num;
for (int i = 0; i < G.vexNumber; i++)
{
G.vexInfo[i] = i;
for (int j = 0; j < G.vexNumber; j++)
{
G.adjMatrix[i][j] = 0;
}
}
for (int i = 0; i < num; i++)
{
int a, b, c;
cin >> a >> b >> c;
G.adjMatrix[a - 1][b - 1] = c;
}
vector<int> ww;
int sum = INT_MAX;
int p;
for (int i = 0; i < G.vexNumber; i++)
{
int sum1 = 0;
vector<int> shortest(G.vexNumber, INT_MAX);
Djistra(G, shortest, i);
for (auto j : shortest)
{
sum1 += j;
}
if (sum1 < sum)
{
sum = sum1;
p = i;
ww = shortest;
}
}
int max = 0;
for(int i = 0;i<G.vexNumber;i++){
if(ww[i] == INT_MAX){
cout<<0<<endl;
return 0;
}
else{
if(i!=p&&ww[i]>max){
max = ww[i];
}
}
}
p = p + 1;
cout << p << ' ' << max;
return 0;
}
实际输出
0
帮我指出代码中问题,并在我的基础上修改