題目看這裡
也是非常套路的一道題
首先考慮,如果只有一組限制,那麼答案就是m-l1
現在考慮加了一組限制的情況下有什麼影響
顯然,被兩段路徑重複覆蓋的那一部分會多減掉一次
那麼我們可以列舉這段路徑,讓後用dp來計算答案,注意因為是無權圖可以bfs o(n^2)求出兩點之間最短路
#pragma gcc opitmize("o3")#pragma g++ opitmize("o3")
#include#include#include#include#define n 3010
using namespace std;
struct edge g[
6010
];int d[n][n],n,m,h[n],cnt=
0; queue<
int> q;
inline
void gmin(
int& x,
int y)
intmain
(); h[x]=cnt;
g[++cnt]=(edge); h[y]=cnt;
}for(
int i=
1;i<=n;++i);
d[i][i]=
0; q.push(i); vis[i]=1;
for(
int x;!q.empty();q.pop())}}
int s1,t1,s2,t2,l1,l2,ans;
scanf(
"%d%d%d%d%d%d"
,&s1,&t1,&l1,&s2,&t2,&l2); ans=d[s1][t1]+d[s2][t2];
if(d[s1][t1]>l1|| d[s2][t2]>l2)
return
0&puts(
"-1"
);for
(int i=
1;i<=n;++i)
for(
int j=
1;j<=n;++j)
printf(
"%d\n"
,m-ans);
}
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...