一道最短路問題,我是稍微變形一下dijkstra來做的
這道題不僅要求最短路,還要求最短路節點和的最大值。
這裡有乙個坑點就是存在多條最短路的時候要輸出最短路徑上節點和最大值
還有乙個坑點就是這是乙個無向圖那麼如果存在a->b的話那麼b->a也是可以的
ps:這是蒻的第一道最短路,用的是priority_queue優化的dijkstra,時間複雜度o(nlogn)。
**如下(記錄前驅的**我注釋掉了因為對這題沒什麼用=。=):
#include #include #include #include #include #define max_n 505
#define inf 0x7fffffff
using namespace std;
//邊的頂點,權值
struct edge
;//first為最短距離,second為頂點
typedef pairp;
vectorg[max_n];
int a[max_n];
//頂點打表
int d[max_n];
//無向圖記錄used
bool used[max_n][max_n];
//記錄前驅,用於記錄路徑
//int pre[max_n];
int n;
int ans[max_n];
void dijkstra(int s)
if (d[e.to] == d[v] + e.cost)
que.push(p(d[e.to], e.to)); //優先佇列,始終是權值最小的在隊首
used[v][e.to] = true;
used[e.to][v] = true;}}
}int main()
dijkstra(start);
/*int tend = end;
ans += a[end];
ans += a[start];
while(pre[tend] != start)
*/cout << d[end] << " " << ans[end] << endl;
return 0;
}
51NOD1459 迷宮遊戲
1459 迷宮遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的...
51Nod 1459 迷宮遊戲
你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的起點和終點房間,你首要目標是從起點盡快到達終點,在滿足首要目標的前提下,使得你的得分總和盡可能大...
51NOD 1459 迷宮遊戲
1459 迷宮遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的...