取源點為0,首先建立從0到各個編號的物品的單向邊,權值為物品**。
由於乙個物品a需要用另乙個物品b來優惠,因此建立從b到a的單向邊,權值為優惠後的**。
列舉在物品1(酋長的允諾)的地位lev[1]-m範圍內的物品地位i在地位i+m的可交易範圍內到源點的最短路。
則d[1]就是最小的金額。
#include #include #include #include #include using namespace std;
const int maxn = 100 + 10;
const int inf = 1000000 + 10;
struct edge
};int lev[maxn];
vectorg[maxn];
int d[maxn];
bool vis[maxn];
void spfa(int n, int start, int end)}}
}}
}int main()
}int ans = inf;
for (int i = lev[1] - m; i <= lev[1]; i++)
printf("%d\n", ans);
return 0;
}
poj 1062 昂貴的聘禮
這個題是乙個簡單的樹形dp,只是有乙個地位差限制,可以列舉可行區間,在可行區間裡進行dp.include include include include include include include include include include includeusing namespace st...
poj1062 昂貴的聘禮
做這題代價確實很昂貴,從昨天晚上一直到今天上午都在debug,今天上午提交還出現各種wa。比較明顯的最短路,有幾個地方要注意一下,首先建圖有個地方要注意以下,這題是用臨界矩陣儲存的有向圖,而且是由交換品指向購買品,然後將虛節點設為購買品的價值,最後列舉每乙個可能地位區間di求最短路,因為對於區間 c...
昂貴的聘禮(POJ1062)
這個玩了好久啊,是我第一次寫出這樣的最短路徑。還是參考了其它人的才出來,注意的有 1 是單向圖,2 把不滿足權值的提前全初始化。其實不用topo排序也可的。關鍵 void dfs int k include include include include include include includ...