zwj 推薦的一道最短路神題
等級限制這個條件可以列舉所有符合條件的區間的點,從最高點到酋長的等級。
然後就是求最短路了。算是 dijstra 的模板吧。
#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define read freopen("acm.in","r",stdin)
#define write freopen("acm.out","w",stdout)
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define pii pair#define pdd pair#define fst first
#define sec second
#define ms(x,d) memset(x,d,sizeof(x))
#define inf 1000001000
#define all(x) x.begin(),x.end()
#define pb push_back
#define mod 99991
#define max 11111
struct node
;vectorg[1000];
int price[1000];
int level[1000];
vectorgl[1000];
vectorre[1000];
int m,n;
int lm;
int dijskra()}}
return dist[1];
}int solve()
{ int maxl=-1;
for(int i=1;i<=n;i++)
maxl=max(level[i],maxl);
maxl=min(lm+m,maxl);
int ans=inf;
for(int l=maxl;l>=lm;l--)// 列舉區間最高等級 從最高可到等級到酋長
{ms(g,0);
for(int tl=l;tl>=0&&abs(tl-l)<=m;tl--)//列舉在區間中的物品
{for(int k=0;k
昂貴的聘禮 poj 1062 最短路
沒看好題目條件 隨便寫了個弗洛伊德就交了 實際上兩個身份差距大的人是連間接交易都不允許的 所以列舉每個等級區間並對其用dijkstra演算法找最小值 ac include include include include include include include include include ...
poj 1062 有限制的最短路
思路 要求對於最短路上的點,不能出現等級之差大於m,於是我們可以列舉,假設酋長的等級為level,於是這個區間範圍 level m,level level m i,level i level,level m 都是可行的,對於列舉的每個區間範圍,做一次spfa即可,最終結果取最小值即可。1 inclu...
POJ 1062 昂貴的聘禮 最短路
假設乙個起點0,根據題目給出的權值構圖,答案就是從0到1之間的最短路。這裡要注意的是這個等級限制的問題。首先等級限制不是相鄰點之間的限制,而是整體路徑的。等級的限制可以通過假設乙個點為最低點求最短路,我假設某個點是最短路中等級最低的,然後求最短路。每列舉乙個點就求一次最短路,取最小的值。因為你列舉的...