POJ1062 昂貴的聘禮

2022-03-06 23:48:55 字數 1010 閱讀 3710

題目鏈結

最短路的題,與一般的最短路不同的是,建圖後每個結點有乙個等級值(乙個非負整數),要求最短路並且路線上的結點的最大等級差不超過給定值。

這題一開始我想到的就是列舉等級區間,在對應區間內用dijkstra求最短路,複雜度是l*n2,l是給定的最大等級差,n為結點數,由於題中l的最大值沒有給出,所以我擔心會超時,寫好後提交是wa而不是tle,這也讓我確定了此法的可行性。經檢查發現導致wa的錯誤:

1.建圖錯誤,按題意應建有限圖;

2.有乙個兩重迴圈的下標重複了;

3.鬆弛的時候忘了檢查結點等級。

view code

1 #include 2 #include 

3#define max(a,b) ((a)>(b)?(a):(b))

4#define min(a,b) ((a)

5#define inf 0x7fffffff

6#define n 101

7int

g[n][n],dist[n],val[n],rank[n],n,m;

8char

vis[n];

9void dijkstra(int u,int

s)10

21 vis[k]=1;22

if(min==inf) break;23

for(v=0;v)

2427}28

}29intmain()

3038

for(i=0;i)

3946

}47 ans=inf;

48 s=max(rank[0]-m,0

);49

for(i=s;i<=rank[0];i++)

5058 ans=min(ans,tmp);59}

60 printf("

%d\n

",ans);61}

62return0;

63 }

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...