去題面的傳送門
一道比較神奇的最短路問題
注意建邊的方式:
比如要得到x,需要y和z金幣,那麼由y指向x的一條有向邊,邊權是z
但是我們的每一種物品都可以直接用金幣來換,所以我們建乙個超級點,連向所有的節點,邊權是這個物品的金幣數
當然,還要有等級的限制:
首先,我們經過的節不能有高於酋長等級的,其次,與酋長的等級差不能超過m
但是我們並不知道酋長的等級是什麼,所以我們還要列舉等級
最後,每乙個等級,都從超級點出發,跑到1號點的最短路
注意是有向邊
**:
#include
#include
#include
#include
#include
using
namespace
std;
queue
q;const
int maxn=1000;
int fist[maxn],nxt[maxn<<1],level[maxn],dis[maxn];
bool vis[maxn];
int ans,cnt,n,m;
struct hh
e[maxn<<1];
void init()
void build(int f,int t,int v)
; nxt[cnt]=fist[f];
fist[f]=cnt;
}int spfa(int king)}}
}return dis[1];
}int main()
}for(int i=1;iif(!ans) ans=spfa(level[i]);
else ans=min(ans,spfa(level[i]));
}printf("%d\n",ans);
}return
0;}
codevs 1324 昂貴的聘禮
前往原題 時間限制 1 s 空間限制 64000 kb 年輕的探險家來到了乙個印第安部落裡。在那裡他和酋長的女兒相愛了,於是便向酋長去求親。酋長要他用10000個金幣作為聘禮才答應把女兒嫁給他。探險家拿不出這麼多金幣,便請求酋長降低要求。酋長說 嗯,如果你能夠替我弄到大祭司的皮襖,我可以只要8000...
ZJOI 1324 昂貴的聘禮 SPFA
題目描述 description 年輕的探險家來到了乙個印第安部落裡。在那裡他和酋長的女兒相愛了,於是便向酋長去求親。酋長要他用10000個金幣作為聘禮才答應把女兒嫁給他。探險家拿不出這麼多金幣,便請求酋長降低要求。酋長說 嗯,如果你能夠替我弄到大祭司的皮襖,我可以只要8000金幣。如果你能夠弄來他...
昂貴的聘禮
時間限制 1000 ms 記憶體限制 10000 kb 難度 4 描述 年輕的探險家來到了乙個印第安部落裡。在那裡他和酋長的女兒相愛了,於是便向酋長去求親。酋長要他用10000個金幣作為聘禮才答應把女兒嫁給他。探險家拿不出這麼多金幣,便請求酋長降低要求。酋長說 嗯,如果你能夠替我弄到大祭司的皮襖,我...