站位
int Dijkstra(const vector<vector<int>> &edge,int start ,int end)
{
int vertexNum=edge.size();
vector<bool> isAdded(vertexNum,false);
isAdded[start]=true;
vector<int> path(vertexNum,-1);
vector<int> dist(vertexNum,INT_MAX);
for(int i=0;i<vertexNum;i++)
{
dist[i]=edge[start][i];
}
for(int count=0;count<vertexNum;count++)
{
int newvertex=0;
int min=INT_MAX;
for(int i=0;i<vertexNum;i++)
{
if(!isAdded[i]&&dist[i]<min)
{
min=dist[i];
newvertex=i;
}
}
isAdded[newvertex]=true;
for(int i=0;i<vertexNum;i++)
{
if(!isAdded[i]&&edge[newvertex][i]!=INT_MAX&&dist[newvertex]+edge[newvertex][i]<dist[i])
{
dist[i]=dist[newvertex]+edge[newvertex][i];
path[i]=newvertex;
}
}
}
//print path
return dist[end];
}