Day 48 算法笔记之提高篇(4)10.4 最短路径(剩余习题)

目录

1.Public Bike Management

2.All Roads Lead to Rome




#include
#include
#include
#include
#include
#include
#include
using namespace std;

const int maxv = 510;
const int inf = 1000000000;

int n,m,cmax,sp,numpath=0,g[maxv][maxv],weight[maxv];
int d[maxv],minneed=inf,minremain=inf;
bool vis[maxv] = {false};
vector pre[maxv];
vector temppath,path;

void dijkstra(int s){
	fill(d,d+maxv,inf);
	d[s] = 0;
	for(int i=0;i=0;i--){
			int id = temppath[i];
			if(weight[id]>0){
				remain += weight[id];
			}else{
				if(remain>abs(weight[id])){
					remain -= abs(weight[id]);
				}else{
					need+=abs(weight[id])-remain;
					remain=0;
				}
			}
		}
		if(need=0;i--){
		printf("%d",path[i]);
		if(i>0) printf("->");
	}
	
	printf(" %d",minremain);
	return 0;
}

2.All Roads Lead to Rome

#include
#include
#include
#include
#include
#include
#include
using namespace std;

const int maxv = 1020;
const int inf = 10000000;

int n,m,k,ds,g[maxv][maxv];
int d[maxv];
bool vis[maxv] = {false};

void dijkstra(int s){
	memset(vis,false,sizeof(vis));
	fill(d,d+maxv,inf);
	
	d[s] = 0;
	for(int i=0;ids){
				mindis=-1;
				break;
			}
			if(d[j]ansdis){
			ansid=i;
			ansdis=mindis;
			ansavg=avg;
		}else if(mindis==ansdis&&avg

你可能感兴趣的:(c语言,开发语言,后端)