题目链接:
题意:从路口1运货到路口n,最大的运货重量是多少?题目给出两路口间的最大载重。
思路:j加到s还是接到K下面,取两者的较大者,而使得载重量较大,而接到k下面,载重量是dis[k]和maps[k][j]的较小者。
#include#include #include using namespace std;#define INF 0x3f3f3f3fint n,m;int maps[1005][1005];int dis[1005];bool vis[1005];void Dijkstra(int s){ memset(vis,false,sizeof(vis)); for(int i=1;i<=n;i++) dis[i] = maps[s][i]; dis[s] = INF; vis[s] = true; for(int i=1;i tmp) { tmp = dis[j]; k = j; } } vis[k] = true; for(int j=1;j<=n;j++) { if(vis[j]) continue; dis[j] = max(dis[j],min(dis[k],maps[k][j])); } }}int main(){ int cases; scanf("%d",&cases); for(int k=1;k<=cases;k++) { scanf("%d%d",&n,&m); memset(maps,0,sizeof(maps)); for(int i=0;i