hdu 3986 最短路 列舉)

2021-06-22 05:39:41 字數 938 閱讀 3638

思路:先spfa求出最短路,然後列舉刪除最短路上的邊,每次刪除一條邊,就求一次最短路,然後去最大的那個就行了。。。可以重邊的問題沒考慮完善,wa了好多次啊!!!

1 #include2 #include3 #include4 #include5

using

namespace

std;

6const

int maxn=1000+10;7

const

int inf=1

<<30;8

struct

node;

11 vectorvet[maxn];

12int

path[maxn];

13int

dist[maxn];

14bool

visited[maxn];

15bool mark[maxn*50

];16

intid[maxn];

17int

n,m;

18bool

tag;

1920

void spfa(int

u)42}43

}44}45

}464748

intmain()

67 tag=true

;68 spfa(1

);69 tag=false;70

if(dist[n]==inf)

74int ans=0;75

bool flag=true;76

for(int u=n;u!=-1;u=path[u])

86 ans=max(ans,dist[n]);87}

88if

(flag)91}

92return0;

93 }

HDU 3986 去掉一條邊 使最短路最大

一直沒想到怎麼做因為複雜度標程也是卡過去的估計 如果按照一條直線出資料的話那就是 20 5e4 1000 5e4 1000 2 log 5e4 很明顯爆掉了。但是事實就是只要遍歷最短路的就完事了 include include include include define x first defin...

hdu3986 spfa 列舉最短路上的邊

題意 刪除一條邊後,求最短路中最長的那個 敵人搞破壞 思路 如果你是敵人你肯定刪除最短路上的邊,刪除別的邊最短路的值是不會變的,所以直接列舉最短路上的邊去刪除,取得最大的就行了.include include include define n node 1005 define n eage 1100...

hdu 2363 最短路 列舉)

思路 和之前hdu上做過的一題很像。就是先求求出所有的高度差,排序後列舉,每次都一次spfa,求出dist,若dist n inf,說明是在最小高度差下找到了最短路徑,直接break即可。另外,發現若不用visited標記的話,時間是其兩倍。orz.以後還是老老實實加visited 吧。1 incl...