1163: [Baltic2008]Mafia

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 96  Solved: 60
[Submit][Status][Discuss]

Description

匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得去掉这些车站后,匪徒无法从原定的初始点到达目标点

Input

第一行输入N,M代表车站的总个数,及有多少条双向边连接它们. 2<=n<=200 , 1 <=m<=20000. 第二行给出两个数a,b,代表匪徒的出发点及目标点.1<=a,b<=N,a<>b. 再下来有N行,给出对第i个车站进行布控所需要的Money,其不超过10 000 000 再下来M行,用于描述图的结构.

Output

最少需要多少Money

Sample Input

5 6
5 3
2
4
8
3
10
1 5
1 2
2 4
4 5
2 3
3 4

Sample Output

5

HINT

 

Source

题解:一个呵呵呵的最小割,将每个题目中的车站拆分成两个点,然后连接上一条边权为该站点费用的边,然后别的题目中所述的边直接连双向边,注意别弄乱了就是了

  1. /**************************************************************
  2. Problem:
  3. User: HansBug
  4. Language: Pascal
  5. Result: Accepted
  6. Time: ms
  7. Memory: kb
  8. ****************************************************************/
  9.  
  10. type
  11. point=^node;
  12. node=record
  13. g,w:longint;
  14. next,anti:point;
  15. end;
  16. var
  17. i,j,k,l,m,n,s,t,ans:longint;
  18. a:array[..] of point;
  19. d,dv:array[..] of longint;
  20. function min(x,y:longint):longint;
  21. begin
  22. if x<y then min:=x else min:=y;
  23. end;
  24. procedure add(x,y,z:longint);
  25. var p:point;
  26. begin
  27. new(p);p^.g:=y;p^.w:=z;p^.next:=a[x];a[x]:=p;
  28. new(p);p^.g:=x;p^.w:=;p^.next:=a[y];a[y]:=p;
  29. a[x]^.anti:=a[y];a[y]^.anti:=a[x];
  30. end;
  31. function dfs(x,flow:longint):longint;
  32. var p:point;k:longint;
  33. begin
  34. if x=t then exit(flow);
  35. dfs:=;p:=a[x];
  36. while p<>nil do
  37. begin
  38. if (p^.w<>) and (d[x]=(d[p^.g]+)) then
  39. begin
  40. k:=dfs(p^.g,min(flow-dfs,p^.w));
  41. if p^.w<>maxlongint then dec(p^.w,k);
  42. if p^.anti^.w<>maxlongint then inc(p^.anti^.w,k);
  43. inc(dfs,k);if dfs=flow then exit;
  44. end;
  45. p:=p^.next;
  46. end;
  47. if d[s]=n then exit;
  48. dec(dv[d[x]]);
  49. if dv[d[x]]= then d[s]:=n;
  50. inc(d[x]);inc(dv[d[x]]);
  51. end;
  52. begin
  53. readln(n,m);
  54. for i:= to n* do a[i]:=nil;
  55. readln(s,t);s:=s*-;t:=t*;
  56. for i:= to n do
  57. begin
  58. readln(j);
  59. add(i*-,i*,j);
  60. end;
  61. for i:= to m do
  62. begin
  63. readln(j,k);
  64. add(j*,k*-,maxlongint);
  65. add(k*,j*-,maxlongint);
  66. end;
  67. fillchar(dv,sizeof(dv),);
  68. fillchar(d,sizeof(d),);
  69. ans:=;n:=n*;
  70. while d[s]<n do inc(ans,dfs(s,maxlongint));
  71. writeln(ans);
  72. readln;
  73. end.
 

1339 / 1163: [Baltic2008]Mafia的更多相关文章

  1. 1163: [Baltic2008]Mafia

    1163: [Baltic2008]Mafia Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 123  Solved: 70[Submit][Stat ...

  2. bzoj1339/1163:[Baltic2008]Mafia

    传送门 最小割,割点,模板... 代码: #include<cstdio> #include<iostream> #include<algorithm> #incl ...

  3. [BZOJ1163][BZOJ1339][Baltic2008]Mafia

    [BZOJ1163][BZOJ1339][Baltic2008]Mafia 试题描述 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用 ...

  4. bzoj1339[Baltic2008]Mafia*

    bzoj1339[Baltic2008]Mafia 题意: 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控.对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得 ...

  5. BZOJ1163&BZOJ1339[Baltic2008]Mafia——最小割

    题目描述 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警 方希望使用最小的代价控制一些车站,使得去掉这些车站后,匪徒无法从原定的初始点到达目标 ...

  6. [BZOJ1339] [Baltic2008] Mafia / 黑手党

    Description 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价, 现在警方希望使用最小的代价控制一些车站,使得去掉这些车站后,匪徒无法从原定的 ...

  7. 【bzoj1163/bzoj1339】[Baltic2008]Mafia 网络流最小割

    题目描述 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得去掉这些车站后,匪徒无法从原定的初始点到达目标点 ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. [BZOJ1163&1339]Mafia

    [Baltic2008]Mafia 题目 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得去掉这些车站后, ...

随机推荐

  1. multipathd dead but pid file exists

    构建RAC环境时出现的错误 百度半天未找到解决方案,Google了一下,终于找到可行方案 Solution:- yum update device-mapper glibc -y [root@HE2 ...

  2. flex blazeds地址

    flex blazeds地址 BlazeDS地址:http://sourceforge.net/adobe/blazeds/wiki/Home/最新BlazeDS版本是2011年编译的4.0.1.21 ...

  3. Canvas createRadialGradient API

    Canvas createRadialGradient API <!DOCTYPE html> <html lang="en"> <head> ...

  4. 微信LazyMan笔试题的深入解析和实现

    一.题目介绍  以下是我copy自网上的面试题原文: 实现一个LazyMan,可以按照以下方式调用: LazyMan("Hank")输出: Hi! This is Hank!   ...

  5. 微信小程序教程(第三篇)

    小程序的架构及实现机制,信道服务及会话管理 小程序架构及实现机制 小程序并不是 H5 应用,而是更偏向于传统的 CS 架构,它是基于数据驱动的模式,一切皆组件(视图组件).所以建议在开发小程序时不要以 ...

  6. 谈谈getElementsByClassName()

    HTML5中新增的一个方法getElementsByClassName(),但是并非所有浏览器有支持 因此我们构造一个方法兼容这个方法 <script type="text/javas ...

  7. sed 命令详解

    sed 用于筛选和转换文本的流编辑器 描述: sed是一个流编辑器,流编辑器对一个输入流执行基本的文本转换(输入流来自文件或者管道行).虽然在某些方面类似于很多可运行脚本的编辑器,但是sed的工作方式 ...

  8. CentOS系统通过PXE实现批量无人值守安装

    通过传统的方式安装和部署计算机时,都需要人工干预的方式完成安装.如果需要部署大量的类似功能的工作站或服务器,则需要耗费大量的时间.同时传统的安装方式,每台计算机都需要光驱设备及安装光盘等介质,会额外增 ...

  9. asp.net core mvc权限控制:分配权限

    前面的文章介绍了如何进行权限控制,即访问控制器或者方法的时候,要求当前用户必须具备特定的权限,但是如何在程序中进行权限的分配呢?下面就介绍下如何利用Microsoft.AspNetCore.Ident ...

  10. android 项目更改包名的方法

    本文章全文转载: http://www.2cto.com/kf/201304/206747.html 1.在项目上右键,选择android tools->rename application p ...