題意:最短路上有一條高度限制,給起點和最大高度,求滿足高度最大情況下,最短路的距離
不明白為什麼列舉所有高度就不對
1 #include2 #include3 #include4const
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,取高度最大的最短路徑就是答案。當列舉太慢,且每次判斷都只有兩...