1444 破壞道路
基準時間限制:1.5 秒 空間限制:131072 kb 分值: 80 難度:5級演算法題
收藏關注在某乙個國家,那兒有n個城市,他們通過m條雙向道路相連。城市從1到n編號。如果城市a和b通過一條道路直接相連,那麼他們之間的距離就是乙個小時。這個國家的道路網路可以允許你從任意乙個城市到達另外的城市。
現在你要破壞盡可能多的道路,但是要保證從城市s1到t1不超過l1小時,並且從城市s2到t2不超過l2小時。
輸出最多可以破壞的道路數目,如果沒有解,請輸出-1
input
單組測試資料。output第一行有兩個整數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)。
輸出乙個整數,表示最多可以破壞的道路數目,如果沒有解,輸出-1。input示例
5 4output示例1 22 3
3 44 5
1 3 2
3 5 2
0**實現:
1 #include2859msusing
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 }
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...