看到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列表示物品...