poj 1062 昂貴的聘禮 最短路徑

2022-06-02 17:45:07 字數 1579 閱讀 3498

昂貴的聘禮

time limit:

memory limit:

total submissions:

accepted:

description

input

輸入第一行是兩個整數m,n(1 <= n <= 100),依次表示地位等級差距限制和物品的總數。接下來按照編號從小到大依次給出了n個物品的描述。每個物品的描述開頭是三個非負整數p、l、x(x < n),依次表示該物品的**、主人的地位等級和替代品總數。接下來x行每行包括兩個整數t和v,分別表示替代品的編號和"***格"。

output

輸出最少需要的金幣數。

sample input

1 4

10000 3 2

2 8000

3 5000

1000 2 1

4 200

3000 2 1

4 200

50 2 0

sample output

5250
source

浙江

1

//176k 0ms c++ 1381b 2013-11-22 12:07:242/*

34題意:中文..56

最短路徑:

7小變異..主要是構圖和列舉等級不好想到,注意等級這一點,題目說得不是

8很明確,等級低的不可以向等級高的交換,等級高的 在差別為m的情況下才能和等級低的交換910

然後構好圖後以虛構的0為起點,遍歷n個點然後找到0到1的最短路即為答案

1112

*/13 #include14 #include

15#define inf 0x7fffffff

16int

n,m;

17int g[105][105

];18

int vis[105],d[105

];19

int lv[105],num[105

];20

int dij() //

dij演算法

2132

if(v==0) break

;

33 vis[v]=1;34

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

35if(!vis[j] && g[v][j]!=inf && d[j]>d[v]+g[v][j])

36 d[j]=d[v]+g[v][j];37}

38return d[1

];39}40

int main(void)41

54}55int min=inf;

56for(int i=1;i<=n;i++)

63int temp=dij();

64if(min>temp) min=temp;65}

66 printf("

%d\n

",min);67}

68return0;

69 }

昂貴的聘禮 poj 1062 最短路

沒看好題目條件 隨便寫了個弗洛伊德就交了 實際上兩個身份差距大的人是連間接交易都不允許的 所以列舉每個等級區間並對其用dijkstra演算法找最小值 ac include include include include include include include include include ...

POJ 1062 昂貴的聘禮 最短路

假設乙個起點0,根據題目給出的權值構圖,答案就是從0到1之間的最短路。這裡要注意的是這個等級限制的問題。首先等級限制不是相鄰點之間的限制,而是整體路徑的。等級的限制可以通過假設乙個點為最低點求最短路,我假設某個點是最短路中等級最低的,然後求最短路。每列舉乙個點就求一次最短路,取最小的值。因為你列舉的...

poj 1062昂貴的聘禮(最短路)

題目 昂貴的聘禮 time limit 1000ms memory limit 10000k total submissions 61174 accepted 18489 description 年輕的探險家來到了乙個印第安部落裡。在那裡他和酋長的女兒相愛了,於是便向酋長去求親。酋長要他用10000...