我就是来复习Dinic算法的,仅10天不写,我已经退化成写一遍+调试需要接近一个小时了,当然其中不乏在网上乱逛的时间…

赞成从S源点连一条单向边,反对向T汇点连一条单向边,朋友关系连双向边。

但是总感觉自己看到题目不能一下想到这是网络流,感觉这些题都是给一个图,求最优之类。

program vote;
type ptype=^node;
node=record
v,w,flow:longint;
op,next:ptype;
end;
const maxn=;
var head:array[..maxn] of ptype;
visit:array[..maxn] of boolean;
q,d:array[..maxn] of longint;
n,m,i,t,x,y,st,ed:longint; function min(a,b:longint):longint;
begin
if a<b then exit(a) else exit(b);
end; procedure insert(u,v,r,s:longint);
var p1,p2,q:ptype;
begin
new(p1);
p1^.v:=v;p1^.w:=r;p1^.flow:=;p1^.next:=nil;
q:=head[u];
if q=nil then head[u]:=p1 else
begin
while q^.next<>nil do q:=q^.next;
q^.next:=p1;
end;
new(p2);
p2^.v:=u;p2^.w:=s;p2^.flow:=;p2^.next:=nil;
q:=head[v];
if q=nil then head[v]:=p2 else
begin
while q^.next<>nil do q:=q^.next;
q^.next:=p2;
end;
p1^.op:=p2;p2^.op:=p1;
end; function bfs:boolean;
var star,rear,x:longint;
y:ptype;
begin
fillchar(visit,sizeof(visit),false);
fillchar(q,sizeof(q),);fillchar(d,sizeof(d),);
star:=;rear:=;q[star]:=st;visit[st]:=true;d[st]:=;
while star<=rear do
begin
x:=q[star];y:=head[x];
while y<>nil do
begin
if (not visit[y^.v]) and (y^.w>y^.flow) then
begin
inc(rear);
q[rear]:=y^.v;
visit[y^.v]:=true;
d[y^.v]:=d[x]+;
end;
y:=y^.next;
end;
inc(star);
end;
bfs:=visit[ed];
end; function addflow(p,maxflow:longint):longint;
var y:ptype;
o:longint;
begin
if (p=ed) or (maxflow=) then exit(maxflow);
//fillchar(visit,sizeof(visit),false);
visit[p]:=true;
addflow:=;
y:=head[p];
while y<>nil do
begin
if (d[y^.v]=d[p]+) and (y^.w>y^.flow) then
begin
o:=addflow(y^.v,min(maxflow,y^.w-y^.flow));
if o> then
begin
inc(addflow,o);
dec(maxflow,o);
inc(y^.flow,o);
dec(y^.op^.flow,o);
if maxflow= then exit;
end;
end;
y:=y^.next
end;
end; function network:longint;
begin
network:=;
while bfs do
inc(network,addflow(st,maxlongint));
end; begin
//assign(input,'vote.in');reset(input);
//assign(output,'vote.out');rewrite(output);
readln(n,m);
st:=;ed:=n+;
for i:= to n do
begin
read(t);
if t= then insert(st,i,,) else insert(i,ed,,);
end;
for i:= to m do
begin
readln(x,y);
insert(x,y,,);
end;
writeln(network);
//close(input);close(output);
end.

Vote

P.S. 07年该是网络流刚开始风靡那会儿吧,怪不得时限5s,数据也很小…

[SHTSC 2007] 善意的投票的更多相关文章

  1. [SHOI 2007] 善意的投票

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1934 [算法] 首先 , 选择睡觉的人和不选择睡觉的人构成两个集合 这启发我们用最小 ...

  2. 「SHOI2007」「Codevs2341」 善意的投票(最小割

    2341 善意的投票 2007年省队选拔赛上海市队选拔赛 时间限制: 5 s 空间限制: 128000 KB 题目等级 : 大师 Master   题目描述 Description 幼儿园里有n个小朋 ...

  3. C++之路进阶——bzoj1934(善意的投票)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...

  4. BZOJ-1934 Vote 善意的投票 最大流+建图

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1551 Solved: 951 [Submit][S ...

  5. bzoj1934: [Shoi2007]Vote 善意的投票

    最大流..建图方式都是玄学啊.. //Dinic是O(n2m)的. #include<cstdio> #include<cstring> #include<cctype& ...

  6. BZOJ 1934: [Shoi2007]Vote 善意的投票 最小割

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnl ...

  7. 1934: [Shoi2007]Vote 善意的投票

    1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1174  Solved: 723[Submit][S ...

  8. 【BZOJ1934】善意的投票(网络流)

    [BZOJ1934]善意的投票(网络流) 题面 Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己 ...

  9. BZOJ_1934_[Shoi2007]Vote 善意的投票

    BZOJ_1934_[Shoi2007]Vote 善意的投票 Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然 ...

随机推荐

  1. 解决httpServletRequest.getParameter获取不到参数

    用httpServletRequest.getParameter接收post请求参数,发送端content Type必须设置为application/x-www-form-urlencoded:否则会 ...

  2. ShaderForge

    什么是ShaderForge ShaderForge的目标是推动统一的视觉质量提升到了新的高度, 给你自由的材质创建在一个视觉和直观的方式——不需要代码! ShaderForge的特性 •实时着色器预 ...

  3. MyBatis 入门(一)

    MyBatis mybatis和hibernate都属于orm(对象与关系映射) 框架 mybatis的优点: 1.sql-mapping :操作更自由,可控性高,执行效率更高 2.轻量,学习更容易 ...

  4. JSP学习

    http://blog.csdn.net/javaeeteacher/article/details/1932447

  5. UML图

    三.说明: 1.类图 第一层显示的是类名,如果是抽象类,就用斜体表示. 第二层是类的特性,通常就是字段和属性. 第三层是类的操作,通常是方法和行为. 注意:'+' 表示 public, '-' 表示 ...

  6. Java输入输出流进阶

    输入输出的内容是文本内容,考虑使用字符流. 输入输出的内容是二进制内容,考虑使用字节流. 凡是能用记事本打开并查看的内容称为文本文件,反之则为二进制文件. package ch15; import j ...

  7. layer弹出层全屏及关闭

    一.首先引用JS文件 <script src="../../js/common/layer/layer.js"></script> 二.全屏调用以下代码 v ...

  8. Python_Day12_python mysql and ORM and redis

    本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令事务  创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql 1. 数 ...

  9. Android开发之Git配置

    Android开发之Git配置 1.首先git配置: 输入命令: git config --global user.name "xxx.xx" git config --globa ...

  10. 无法删除对象 '产品',因为该对象正由一个 FOREIGN KEY 约束引用。

    在删除northwindcs表时,发生报错,消息 3726,级别 16,状态 1,第 2 行,无法删除对象 '产品',因为该对象正由一个 FOREIGN KEY 约束引用.此时判断是因为有其他表的外键 ...