[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个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然 ...
随机推荐
- 2014鸟人Birdman中文字幕文件下载
下载后,解压缩,会得到 Birdman.2014.1080p.WEB-DL.DD5.1.H264-RARBG.srt 文件,把这个文件放到视频文件(mkv文件)相同的文件夹里. 用暴风影音播放,如果没 ...
- vnc连接kali 2.0 报错:A problem has occurred and the system can't recover.
kali版本: root@kali:~# uname -a Linux kali -kali1-amd64 # SMP Debian -7kali2 (--) x86_64 GNU/Linux 第一步 ...
- [bzoj3192][JLOI2013]删除物品(树状数组)
3192: [JLOI2013]删除物品 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 872 Solved: 508[Submit][Status ...
- DataTable转换为Json字符串的三种方法
//第一种:使用StringBuilder public string DataTableToJson(DataTable table) { var JsonString = new StringB ...
- eslintrc配置翻译
{ "env": { "browser": true, "node": true, "commonjs": true } ...
- ubuntu14.04 Hadoop单机开发环境搭建MapReduce项目
Hadoop官网:http://hadoop.apache.org/ 目前最新的版本是Hadoop 3.0.0-alpha1前提:java 1.6 版本以上 首先从官网下载压缩包(hadoop-3.0 ...
- linux限制ftp账户的访问路径
1.建用户,命令行状态下,在root用户下: 运行命令:"useradd -d /home/test test" //增加用户test,并制定test用户的主目录为/home/te ...
- oracle 存储过程创建及执行简单实例
1. 创建 CREATE OR REPLACE PROCEDURE getAplage(eNo IN NUMBER,salary OUT NUMBER) AS BEGIN SELECT AplAge ...
- spark快速大数据分析学习笔记*初始化sparkcontext(一)
初始化SparkContext 1// 在java中初始化spark import org.apache.spark.SparkConf; import org.apache.spark.api.ja ...
- ireport5.6+jasperreport6.3开发(三)--以javabean为基准的报表开发(javabean)
这里只有ireport的开发没有web侧的程序. ireport的数据源可以说是多种多样,大致可以通过文件 数据库 bean类这三种方式,这里只介绍bean类 (数据库比较简单可参考其他的网站,文件没 ...