[Baltic2008]Mafia

题目

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

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

OUTPUT

5

解题报告

本命题QWQ

我的Mafia啊QWQ

其实就是个裸的最小割QWQ

  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. #include <queue>
  5. using namespace std;
  6. inline int read(){
  7. int sum();char ch(getchar());
  8. for(;ch<''||ch>'';ch=getchar());
  9. for(;ch>=''&&ch<='';sum=sum*+(ch^),ch=getchar());
  10. return sum;
  11. }
  12. struct edge{int e,w;edge *n,*rev;}*pre[];
  13. inline void insert(int s,int e,int w){
  14. edge *tp1(new edge),*tp2(new edge);
  15. tp1->e=e;tp1->w=w;tp1->rev=tp2;tp1->n=pre[s];pre[s]=tp1;
  16. tp2->e=s;tp2->w=;tp2->rev=tp1;tp2->n=pre[e];pre[e]=tp2;
  17. }
  18. const int inf(0x3f3f3f3f);
  19. int n,m,a,b,S,T,ans,dis[];
  20. queue<int>q;
  21. inline bool bfs(){
  22. memset(dis,,sizeof(dis));while(!q.empty())q.pop();dis[S]=;q.push(S);
  23. while(!q.empty()){
  24. int k(q.front());q.pop();
  25. for(edge *i=pre[k];i;i=i->n)
  26. if(i->w&&!dis[i->e]){
  27. dis[i->e]=dis[k]+;
  28. if(i->e==T)return true;
  29. q.push(i->e);
  30. }
  31. }
  32. return false;
  33. }
  34. inline int dfs(int u,int f){
  35. if(u==T||!f)return f;
  36. int ret();
  37. for(edge *i=pre[u];i;i=i->n)
  38. if(i->w&&dis[i->e]==dis[u]+){
  39. int tmp(dfs(i->e,min(i->w,f-ret)));
  40. i->w-=tmp;i->rev->w+=tmp;ret+=tmp;
  41. if(ret==f)break;
  42. }
  43. return ret;
  44. }
  45. int main(){
  46. n=read(),m=read(),a=read(),b=read();S=,T=(n<<)+;
  47. insert(S,a,inf);insert(b+n,T,inf);
  48. for(int i=;i<=n;++i){int x(read());insert(i,i+n,x);}
  49. for(int i=;i<=m;++i){
  50. int x(read()),y(read());
  51. insert(x+n,y,inf);insert(y+n,x,inf);
  52. }
  53. while(bfs())ans+=dfs(S,inf);
  54. printf("%d",ans);
  55. }

[BZOJ1163&1339]Mafia的更多相关文章

  1. [BZOJ1163][BZOJ1339][Baltic2008]Mafia

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

  2. 1339 / 1163: [Baltic2008]Mafia

    1163: [Baltic2008]Mafia Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 96  Solved: 60[Submit][Statu ...

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

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

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

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

  5. ural 1339. Babies

    1339. Babies Time limit: 1.0 secondMemory limit: 64 MB O tempora! O mores! Present-day babies progre ...

  6. csu oj 1339: 最后一滴血

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1339 1339: 最后一滴血 Time Limit: 1 Sec  Memory Limit: 1 ...

  7. UVa 1339,紫书P73,词频

    题目链接:https://uva.onlinejudge.org/external/13/1339.pdf 紫书P73 解题报告: #include <stdio.h> #include ...

  8. UVa 1339 Ancient Cipher --- 水题

    UVa 1339 题目大意:给定两个长度相同且不超过100个字符的字符串,判断能否把其中一个字符串重排后,然后对26个字母一一做一个映射,使得两个字符串相同 解题思路:字母可以重排,那么次序便不重要, ...

  9. Codeforces Gym 100733H Designation in the Mafia flyod

    Designation in the MafiaTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...

随机推荐

  1. MySQL 目录结构信息

    bin 目录,存储可执行文件. data 目录,存储数据文件. docs 目录,文档. include 目录,存储包含的头文件. lib 目录,存储库文件. share 目录,错误信息和字符集文件.

  2. Python机器学习算法 — 决策树(Decision Tree)

    决策树 -- 简介         决策树(decision tree)一般都是自上而下的来生成的.每个决策或事件(即自然状态)都可能引出两个或多个事件,导致不同的结果,把这种决策分支画成图形很像一棵 ...

  3. spring的annotation

    spring容器创建bean对象的方式: 1,使用反射调用无参构造器来创建实例(前提是这个类有无参构造器)(常规方式) 2,通过工厂类获得实例(工厂类实现了接口FactoryBean<?> ...

  4. [转]C语言文件操作函数大全(超详细)

    fopen(打开文件)相关函数 open,fclose表头文件 #include<stdio.h>定义函数 FILE * fopen(const char * path,const cha ...

  5. 题解报告:poj 3669 Meteor Shower(bfs)

    Description Bessie hears that an extraordinary meteor shower is coming; reports say that these meteo ...

  6. HTML基础2——综合案例2——复杂的嵌套列表

    <html> <head> <title></title> </head> <body> <ul type="d ...

  7. redis学习-字典

    1.字典作用 实现数据库键空间(key space): 用作 Hash 类型键的底层实现之一: 2.字典实现的数据结构 typedef struct dict { // 特定于类型的处理函数 dict ...

  8. 利用反射重写toString()方法

    为了方便输出对象,Object类提供了toString()方法.但是该方法的默认值是由类名和哈希码组成的,实用性并不强.通常需要重写该方法以提供更多的信息.本实例使用反射输出类的包.类的名字.类的公共 ...

  9. Selenium学习第二天,了解Selenium工作模式与学习Selenium需要具备的知识与工具。

    Selenium学习网站: 1.http://www.ltesting.net/ceshi/open/kygncsgj/selenium/2014/0408/207237.html——好像是对API的 ...

  10. tensorFlow资源

    1,[莫烦]Tensorflow tutorials (Eng Sub) 神经网络 http://www.bilibili.com/video/av10118932/index_35.html#pag ...