51nod 1444 破壞道路(bfs 列舉)

2022-02-27 07:43:35 字數 1547 閱讀 8136

1444 破壞道路

基準時間限制:1.5 秒 空間限制:131072 kb 分值: 80 難度:5級演算法題

收藏關注在某乙個國家,那兒有n個城市,他們通過m條雙向道路相連。城市從1到n編號。如果城市a和b通過一條道路直接相連,那麼他們之間的距離就是乙個小時。這個國家的道路網路可以允許你從任意乙個城市到達另外的城市。

現在你要破壞盡可能多的道路,但是要保證從城市s1到t1不超過l1小時,並且從城市s2到t2不超過l2小時。

輸出最多可以破壞的道路數目,如果沒有解,請輸出-1

input

單組測試資料。

第一行有兩個整數n,m(1 ≤ n ≤ 3000, n-1 ≤ m ≤ min(3000,n*(n-1)/2) )。

接下來m行,每行有兩個整數 ai, bi (1 ≤ ai, bi ≤ n, ai ≠ bi),表示ai和bi之間有一條道路。

輸入保證是乙個連通圖。

最後兩行每行有三個整數s1, t1, l1和 s2, t2, l2, (1 ≤ si, ti ≤ n, 0 ≤ li ≤ n)。

output

輸出乙個整數,表示最多可以破壞的道路數目,如果沒有解,輸出-1。
input示例

5 4

1 22 3

3 44 5

1 3 2

3 5 2

output示例

0
**實現:

1 #include2

using

namespace

std;

3const

int n = 3005;4

const

int m = 3005;5

const

int inf = 0x3f3f3f3f

;6 vectorg[n];

7int

d[n][n];

8int

vis[n];

9void bfs(int

x) 25}26

}27intmain()

37int

s1, t1, l1, s2, t2, l2;

38 scanf("

%d%d%d%d%d%d

", &s1, &t1, &l1, &s2, &t2, &l2);

3940

for(i = 1; i <= n; ++i) bfs(i);

4142

int ans = d[s1][t1]+d[s2][t2];

43if(d[s1][t1] <= l1 && d[s2][t2] <=l2)

49if(d[s1][i]+d[i][j]+d[j][t1] <= l1 && d[t2][i]+d[i][j]+d[j][s2] <=l2) 52}

53}54 printf("

%d\n

", m -ans);55}

56else puts("-1"

);57

return0;

58 }

859ms

51nod1444 破壞道路

1444 破壞道路 codeforces 基準時間限制 1.5 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 在某乙個國家,那兒有n個城市,他們通過m條雙向道路相連。城市從1到n編號。如果城市a和b通過一條道路直接相連,那麼他們之間的距離就是乙個小時。這個國家的道路網路可以允許你...

51nod 1444 破壞道路

在某乙個國家,那兒有n個城市,他們通過m條雙向道路相連。城市從1到n編號。如果城市a和b通過一條道路直接相連,那麼他們之間的距離就是乙個小時。這個國家的道路網路可以允許你從任意乙個城市到達另外的城市。現在你要破壞盡可能多的道路,但是要保證從城市s1到t1不超過l1小時,並且從城市s2到t2不超過l2...

51nod 1444 破壞道路

在某乙個國家,那兒有n個城市,他們通過m條雙向道路相連。城市從1到n編號。如果城市a和b通過一條道路直接相連,那麼他們之間的距離就是乙個小時。這個國家的道路網路可以允許你從任意乙個城市到達另外的城市。現在你要破壞盡可能多的道路,但是要保證從城市s1到t1不超過l1小時,並且從城市s2到t2不超過l2...