題目鏈結
最短路的題,與一般的最短路不同的是,建圖後每個結點有乙個等級值(乙個非負整數),要求最短路並且路線上的結點的最大等級差不超過給定值。
這題一開始我想到的就是列舉等級區間,在對應區間內用dijkstra求最短路,複雜度是l*n2,l是給定的最大等級差,n為結點數,由於題中l的最大值沒有給出,所以我擔心會超時,寫好後提交是wa而不是tle,這也讓我確定了此法的可行性。經檢查發現導致wa的錯誤:
1.建圖錯誤,按題意應建有限圖;
2.有乙個兩重迴圈的下標重複了;
3.鬆弛的時候忘了檢查結點等級。
view code
1 #include 2 #include3#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...