// rist[j]=rist[mv]+a[j]; //更新 已经找到最短路径的那一个顶点 已经确认的到达这个顶点的总人数
path[j] = mv;
}
}
}
}
}
printf(“%d %d”,count[end],cist[end]);
printf(“\n”);
putlu(begin,end);
}
int main(){
PtrGNode G;
G=(PtrGNode)malloc(sizeof(struct GNode));
CreatGNode(G);
Dijkstra(G);
//outprint(G);
}
//2 1 0 1
//20 30
//0 1 2
//6 9 0 3
//10 20 30 40 50 60
//0 1 1
//0 2 3
//0 3 6
//0 4 3
//0 5 2
//1 2 2
//2 3 3
//3 4 3
//4 5 1
=========================================================================================
但这个超时间。我优化了但还是过去
/**
思路:
这个就是单源点最短路径的变形,这里是出现了到达某个顶点出现相同的最短距离,
只不过是经过的点不一样,每个点给了相应的赋值,我们需要判断每一条路径上经过的
点,他们的值相加(每个点赋值),比较最大的那个就是救援队人数最多的,
选取他们作为救援最优路径
*/
#include<bits/stdc++.h>
using namespace std;
#define infinite 9999
typedef struct GNode* PtrGraph;
typedef struct GNode{
int Nv;
int Ne;
int Date[501][501];
}gnode;
int N,M,S,D;
map<int,int>m;//用map容器进行储存每个结点的救援队数量
int path[501] = { S };//将路径的初始值设为开始的那个点
//邻接矩阵储存图
void createGraph(PtrGraph G){
cin >> N >> M >> S >>