[SHTSC 2007] 善意的投票
我就是来复习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] 善意的投票的更多相关文章
- [SHOI 2007] 善意的投票
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1934 [算法] 首先 , 选择睡觉的人和不选择睡觉的人构成两个集合 这启发我们用最小 ...
- 「SHOI2007」「Codevs2341」 善意的投票(最小割
2341 善意的投票 2007年省队选拔赛上海市队选拔赛 时间限制: 5 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 幼儿园里有n个小朋 ...
- C++之路进阶——bzoj1934(善意的投票)
F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...
- BZOJ-1934 Vote 善意的投票 最大流+建图
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1551 Solved: 951 [Submit][S ...
- bzoj1934: [Shoi2007]Vote 善意的投票
最大流..建图方式都是玄学啊.. //Dinic是O(n2m)的. #include<cstdio> #include<cstring> #include<cctype& ...
- BZOJ 1934: [Shoi2007]Vote 善意的投票 最小割
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnl ...
- 1934: [Shoi2007]Vote 善意的投票
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1174 Solved: 723[Submit][S ...
- 【BZOJ1934】善意的投票(网络流)
[BZOJ1934]善意的投票(网络流) 题面 Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己 ...
- BZOJ_1934_[Shoi2007]Vote 善意的投票
BZOJ_1934_[Shoi2007]Vote 善意的投票 Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然 ...
随机推荐
- 记SpannableString设多少span时注意事项
public void setSpan(Object what, int start, int end, int flags) { } 这个方法里的第一个参数,也就是一些span的对象,不能重复使用. ...
- 企业办公3D指纹考勤系统解决方案
员工准时.正常出勤是企业考勤制度的基本要求,然而目前签名式.卡钟式.IC卡考勤系统均存在代打卡.人情卡.不易统计等漏洞,而市面上的光学指纹考勤机存在识别能力差.识别速度慢.使用寿命短.不能完全杜绝指纹 ...
- 【树莓派】树莓派使用4G模块上网
想了解一下树莓派通过4G网络模块通信如何实现,看到这篇文章(http://www.lxway.com/95811506.htm),准备接下来有机会实践一下,先留存学习: 一.4G Luci配置 1. ...
- git中常用命令小结
提交过程 查看文件改动以及新增的文件 git status 添加新增文件 git add your_file_path // 添加全部文件 git add * // 添加某类型文件 提交文件 git ...
- white-space: nowrap 与字符串(文本)换行
在需要对字符串进行元素内换行时,我们通常要对该元素设置相关属性约束以及宽度. 例如:style="word-wrap:break-word; word-break: break-all; w ...
- go并发3
Go语言并发的设计模式和应用场景 以下设计模式和应用场景来自Google IO上的关于Goroutine的PPT:https://talks.golang.org/2012/concurrency.s ...
- Android之Dialer之紧急号码
Android之Dialer之紧急号码 e over any other (e.g. supplementary service related) number analysis. a) 112 an ...
- nginx.conf 解释
http://snapshot.sogoucdn.com/websnapshot?ie=utf8&url=http%3A%2F%2Fwww.cszhi.com%2F20120513%2Fngi ...
- plist基本操作
重要概念:某些路径下“只能读,不能写”的原因 iPhone.ipad真机上 Resouces文件夹:是只读的,无法写入. document 和temp文件夹:可读,可写. 一.工程结构
- ngui的tween的tweenFactor属性
ngui的tween的tweenFactor属性 这个属性是用来记录动画运行的位置的.可以通过设置它来达到动画运行到一半从新设置从新开始