当前位置: 首页 > news >正文

bzoj 1934: [Shoi2007]Vote 善意的投票 (最小割)

原来是赞同的连源,原来是反对的连汇,然后是朋友的就连在一起,这样最小割就是割掉违背和谐的吧

 

type
  arr=record
    toward,next,cap:longint;
  end;
const
  maxm=300000;
  maxn=700;
var
  first,col,gap,d,cur:array[0..maxn]of longint;
  edge:array[0..maxm]of arr;
  esum,tot,s,t,n:longint;
 
function min(x,y:longint):longint;
begin
  if x<y then exit(x);
  exit(y);
end;
 
procedure add(j,k,l:longint);
begin
  inc(esum);
  edge[esum].toward:=k;
  edge[esum].next:=first[j];
  first[j]:=esum;
  edge[esum].cap:=l;
end;
 
procedure addedge(j,k,l:longint);
begin
  add(j,k,l);
  add(k,j,0);
end;
 
procedure into;
var
  i,j,n,m:longint;
begin
  readln(n,m);
  fillchar(first,sizeof(first),255);
  esum:=-1;
  tot:=n+2;
  s:=n+1;
  t:=n+2;
  for i:=1 to n do begin
    read(col[i]);
    if col[i]=0 then addedge(s,i,1)
      else addedge(i,t,1);
  end;
  while m>0 do begin
    dec(m);
    read(i,j);
    if col[i]=0 then addedge(i,j,1)
      else addedge(j,i,1);
  end;
end;
 
function sap(x,flow:longint):longint;
var
  now,more,too,i:longint;
begin
  if x=t then exit(flow);
  i:=cur[x];
  now:=0;
  while i>=0 do begin
    too:=edge[i].toward;
    if (d[x]=d[too]+1) and (edge[i].cap>0) then begin
      more:=sap(too,min(edge[i].cap,flow-now));
      dec(edge[i].cap,more);
      inc(edge[i xor 1].cap,more);
      inc(now,more);
      cur[x]:=i;
      if now=flow then exit(flow);
    end;
    i:=edge[i].next;
  end;
  dec(gap[d[x]]);
  if gap[d[x]]=0 then d[s]:=tot;
  inc(d[x]);
  inc(gap[d[x]]);
  cur[x]:=first[x];
  exit(now);
end;
 
function maxflow:longint;
var
  i,ans:longint;
begin
  fillchar(d,sizeof(d),0);
  fillchar(gap,sizeof(gap),0);
  gap[0]:=tot;
  for i:=1 to n do cur[i]:=first[i];
  ans:=0;
  while d[s]<tot do inc(ans,sap(s,maxlongint));
  exit(ans);
end;
 
 
begin
  into;
  writeln(maxflow);
end.
View Code

 

转载于:https://www.cnblogs.com/Macaulish/p/4358155.html

相关文章:

  • EntityFramwork6连接MySql错误
  • 使用模块化编译缩小 apk 体积
  • SQL千万级数据设计和优化
  • PHP之字符串操作
  • Spring3自定义环境配置 beans profile=
  • (转)JAVA中的堆栈
  • unity动画状态机的学习
  • 1.5 Android 入门实例 后台循环发短信
  • iOS 本地化
  • SublimeText2 快捷键一览表
  • 如何删除ubuntu旧内核
  • 不同的领域,同样的声音(转)
  • 回档|数字三角形3,4
  • Convirt2.5的简单使用
  • Gamma曲线
  • gops —— Go 程序诊断分析工具
  • Linux下的乱码问题
  • Puppeteer:浏览器控制器
  • Python学习之路13-记分
  • React中的“虫洞”——Context
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • select2 取值 遍历 设置默认值
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Zepto.js源码学习之二
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 回流、重绘及其优化
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 跨域
  • 力扣(LeetCode)22
  • 前言-如何学习区块链
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 事件委托的小应用
  • 收藏好这篇,别再只说“数据劫持”了
  • 手机端车牌号码键盘的vue组件
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (1) caustics\
  • (3)选择元素——(17)练习(Exercises)
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C++)八皇后问题
  • (接口封装)
  • (理论篇)httpmoudle和httphandler一览
  • (四)图像的%2线性拉伸
  • (一)appium-desktop定位元素原理
  • (一一四)第九章编程练习
  • (转) RFS+AutoItLibrary测试web对话框
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ***通过什么方式***网吧
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net web项目 调用webService
  • .net通用权限框架B/S (三)--MODEL层(2)