hdu 2962 最短路 二分

2022-06-02 14:39:08 字數 1565 閱讀 2070

題意:最短路上有一條高度限制,給起點和最大高度,求滿足高度最大情況下,最短路的距離

不明白為什麼列舉所有高度就不對

1 #include2 #include3 #include4

const

int maxint=999999;5

int c[1005][1005][2],dist[1005],h[1005];6

using

namespace

std;

7int

n,line;

8int

i,j,k;

9int

st,ed,mid;

10int t=0;11

int path[1005

];12

int visit[1005

];13

bool

dijkstra()

1424 s[st]=1;25

for(int i=1;i)

2635

if(temp==maxint) break

;36 s[u]=1;37

if(u==ed) return

true;38

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

39if(!s[j]&&c[u][j][1]!=maxint&&c[u][j][0]>=mid)

40if(dist[j]>dist[u]+c[u][j][1

])4145}

46return

false;47

}48intmain()

4966

for(i=1;i<=line;i++)

6776

if(c[p][q][0]7781}82

inttall;

83 scanf("

%d%d%d

",&st,&ed,&tall);

84/*

if(st==ed)

85*/

90/*

h[tot++]=tall;

91sort(h,h+tot);

92int ans=0;

93bool flag=0;

94for(i=tot-1;i>=0;i--)

95104}*/

105int first=1

;106

intans;

107 mid=(first+tall)>>1

;108

while(first<=tall)

109115

else

116 tall=mid-1

;117 mid=(first+tall)>>1

;118

}119

if(tall==0) printf("

cannot reach destination\n");

120else

121125

}126

return0;

127 }

hdu 2962(二分答案 最短路)

題目大意 給你城市數c,道路數r,運載車的限高h,以及每條道路的限高limit,讓你求start到end的貨物的最大高度res res limit,res h 和在貨物最大高度下,從start到end的最短路。大體思路 二分答案 res 1.h 然後再求最大高度下的最短路即可。具體看 include...

hdu2962 限制最短路 列舉

題意 n個點m條邊,每條邊有兩個權,乙個是路的長度,乙個是路限制了貨車運輸的高度。最後一行給出起點,終點,和這部車子可以運輸貨物放的最大的高度。思路 這裡的列舉限制高度,可以過,高度從大列舉到小,可以過600ms 如果二分的話更快。include include include include in...

hdu 2962 Trucking(二分 最短路)

題意 卡車要運輸盡可能高的貨物 但不高於乙個安全值 城市間每一條路是雙向的但是都有高度限制。求解運輸盡可能高的貨物時,卡車到達目的地的最短路徑。單源最短路徑的變形,在最短路徑基礎上加了高度限制。思路 採用二分搜尋法 修改的dijkstra,取高度最大的最短路徑就是答案。當列舉太慢,且每次判斷都只有兩...