vijos 1524 最小監視代價

2022-04-05 01:55:46 字數 1268 閱讀 7478

看到vijos上此型別的題目較少,特地放一道上來給大家練練。

由於yxy小朋友做了一些不該做的事,他被jzp關進了乙個迷宮裡。由於jzp最近比較忙,疏忽大意了一些,yxy可以在迷宮中任意走動。整個迷宮可以被看作是乙個無向圖。迷宮中有一些結點有傳送點,可以讓他逃離這個迷宮。jzp發明了一種機械人,可以監視迷宮中的道路,被監視的道路yxy不能通過,我們簡單的認為監視一條道路的代價即為這條道路的長度。現在jzp正在忙,請你編乙個程式算出使yxy無法逃離迷宮的最小監控總代價。(yxy一開始在1號結點)

第1行:兩個自然數n和e,分別表示迷宮的節點數和邊數。

第2至e+1行:每行三個自然數a、b和w,表示a和b之間有一條道路,長度為w。

第e+2行:乙個自然數m,表示有傳送點結點的個數。

第e+3行:m個自然數,表示有傳送點的結點。

乙個自然數,表示最小監視總代價。

5 5

1 2 1

1 3 2

2 5 3

2 3 3

3 4 2

24 5

3
每個測試點1s

n<100,e<300,m經典問題改編

最大流屠龍寶刀點選就送

#include #include 

#include

#define inf 1e9

#define max 150

using

namespace

std;

struct

node

edge[max*max];

int answer,head[max*max],cnt=1,n,m,e,dep[max*max];

void add(int u,int v,int

l)bool bfs(int s,int

t) }

}return0;

}int dfs(int s,int t,int

came_flow)

if(came_flow==0) break

; }

return

res;

}int dinic(int s,int

t)int

main()

scanf("%d

",&m);

for(int x;m--;)

printf("%d

",dinic(1

,n));

return0;

}

Vijos P1524 最小監視代價

題目大意 有一些點和一些邊,每條邊有乙個監視代價。乙個人從1號點出發,到達某些 傳送點 可以逃生。但被監視的邊就不能走了。要你用最小的監視代價使得那個人無法傳送。解題思路 求最小割。先建乙個超級匯點 n 1 把所有傳送點連上這個超級匯點,然後根據 最小割 最大流 的定理,跑最大流即可。注意無向圖。以...

vijos1456 最小總代價

描述 n 個人在做傳遞物品的遊戲,編號為1 n。遊戲規則是這樣的 開始時物品可以在任意一人手上,他可把物品傳遞給其他人中的任意一位 下乙個人可以傳遞給未接過物品的任意一人。即物品只能經過同乙個人一次,而且每次傳遞過程都有乙個代價 不同的人傳給不同的人的代價值之間沒有聯絡 求當物品經過所有 n 個人後...

Vijos 最小總代價 狀壓DP

描述 n個人在做傳遞物品的遊戲,編號為1 n。即物品只能經過同乙個人一次,而且每次傳遞過程都有乙個代價 不同的人傳給不同的人的代價值之間沒有聯絡 求當物品經過所有n個人後,整個過程的總代價是多少。格式 輸入格式 第一行為n,表示共有n個人 16 n 2 以下為n n的矩陣,第i 1行 第j列表示物品...