51nod 1459 迷宮遊戲(bfs與djsk)

2021-07-22 14:02:29 字數 2351 閱讀 3483

bfs

bfs題目,要求最短路徑下最大得分。

由於基礎不紮實,我坑坑窪窪的打出了bfs求最短路徑,**如下:

#include 

#include

#include

#include

#include

#include

using

namespace

std;

#define inf 0x3f3f3f3f

#define pi acos(-1.0)

#define n 510

int n,m,start,end;

int v[n],vis[n];

int g[n][n];

struct yuan

;void bfs_slove()

else

q.push(next);}}

}}int main()

bfs_slove();

return

0;}

學習如何在,bfs求最短路徑上,求最大得分呢?最開始我想先求出最大路徑後,返回再計算比較最大得分記錄。但是這樣太麻煩,我們可以用優先佇列來排好最優解。**如下:

#include 

#include

#include

#include

#include

#include

using

namespace

std;

#define inf 0x3f3f3f3f

#define pi acos(-1.0)

#define n 510

int n,m,start,end;

int v[n],vis[n];

int g[n][n];

struct yuan

};void bfs_slove()

for(int i = 0; i < n; i++)}}

}int main()

bfs_slove();

return

0;}

dijk

這題其實完全可以用迪傑斯特拉來計算最短路來做。

先隨手打個dijk模板,**如下

#include 

#include

#include

#include

#include

#include

using

namespace

std;

#define inf 0x3f3f3f3f

#define pi acos(-1.0)

#define n 510

int n,m,start,end;

int v[n],dis[n],vis[n];

int g[n][n];

void init()

}}void map()

}void dijk()

}if(min == inf)

break;

vis[next] = 1;

for(int j = 0; j < n; j++)

}}int main()

現在我們需要再考慮最大得分,需要乙個記錄最大分值的陣列,以及在路長相同時取最大得分。**如下

#include 

#include

#include

#include

#include

#include

using namespace std;

#define inf 0x3f3f3f3f

#define pi acos(-1.0)

#define n 510

int n,m,start,end;

int v[n],dis[n],low[n],vis[n];

int g[n][n];

void init()

}}void map()

}void dijk()

if(!vis[j] && dis[j] == min && maxn < low[j])

}if(min == inf)

break;

vis[next] = 1;

for(int j = 0; j < n; j++)

if(!vis[j] && dis[j]==dis[next]+g[next][j] && low[j]next]+v[j])

low[j] = low[next] + v[j];}}

}int main()

51NOD1459 迷宮遊戲

1459 迷宮遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的...

51Nod 1459 迷宮遊戲

你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的起點和終點房間,你首要目標是從起點盡快到達終點,在滿足首要目標的前提下,使得你的得分總和盡可能大...

51NOD 1459 迷宮遊戲

1459 迷宮遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的...