51Nod1444 破壞道路

2022-05-09 14:09:11 字數 1070 閱讀 7802

題目看這裡

也是非常套路的一道題

首先考慮,如果只有一組限制,那麼答案就是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...