【NEERC 2003】有向图破坏
【题目描述】
Alice和Bob正在玩如下的游戏。首先Alice画一个有N个顶点,M条边的有向图。然后Bob试着摧毁它。在一次操作中他可以找到图中的一个点,并且删除它所有的入边或所有的出边。
Alice给每个点定义了两个值:Wi+和Wi-。如果Bob删除了第i个点所有的入边他要给Alice付Wi+元,如果他删除了所有的出边就需要给Alice付Wi元。
找到Bob删除图中所有边需要的最小花费。
【输入格式】
输入数据描述了Alice画下的图。
输入文件的第一行有两个数N,M(1<=N<=100,1<=M<=5000)。第二行有N个整数,描述了N个点的Wi+,同样的第三行是这N个点的Wi-。所有的费用都是正数并且不超过10^6。接下来的M行每行有两个数,代表有向图中相应的一条边。
【输出格式】
输出一行一个整数,即Bob的最小花费。
【分析】
很容易想到,把每个点拆成两个点,一个控制出边,一个控制入边,保留原边后很明显的一个最小权点覆盖集,Dinic就行了。
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
const int maxn=;
const int INF=*;
using namespace std;
struct tu
{
int c,f;
tu(){c=;f=;}
}maps[maxn][maxn];
int dist[maxn],n,m; void Dinic();
bool BFS();//构建层次网络
int dfs(int v,int low); int main()
{
int i;
//文件操作
freopen("destroyingthegraph.in","r",stdin);
freopen("destroyingthegraph.out","w",stdout);
memset(maps,,sizeof(maps)); scanf("%d%d",&n,&m);//n个点,m条边 for (i=;i<=n;i++) scanf("%d",&maps[i+n][*n+].c);//w+
for (i=;i<=n;i++) scanf("%d",&maps[][i].c);//w- for (i=;i<=m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
maps[u][v+n].c=INF;
}
Dinic();
return ;
}
void Dinic()
{
int flow=;
while ( BFS() )
{
int temp=;
if (temp=dfs(,INF)) flow+=temp;
}
printf("%d\n",flow);
}
bool BFS()//层次网络
{
queue<int>Q;
int i;
memset(dist,-,sizeof(dist));
dist[]=;
Q.push();
while (!Q.empty())
{
int u=Q.front();Q.pop();
for (i=;i<=(*n+);i++)
{
int v=i;
if(maps[u][v].c-maps[u][v].f> && dist[v]==-)
{
dist[v]=dist[u]+;
Q.push(v);
}
}
}
return (dist[(*n)+]!=-);
}
int dfs(int u,int low)
{
if (u==(*n)+ || low==) return low;
int flow=,f,i;
for (i=;i<=(*n)+;i++)
{
int v=i;
if (maps[u][v].c>maps[u][v].f && dist[v]==dist[u]+)
{
if (f=dfs(i,min(low,maps[u][v].c-maps[u][v].f)))
{
maps[u][v].f+=f;
maps[v][u].f-=f;
low-=f;
flow+=f;
if (low==) break;
}
}
}
return flow;
}
【NEERC 2003】有向图破坏的更多相关文章
- 【中途相遇+二进制】【NEERC 2003】Jurassic Remains
例题25 侏罗纪(Jurassic Remains, NEERC 2003, LA 2965) 给定n个大写字母组成的字符串.选择尽量多的串,使得每个大写字母都能出现偶数次. [输入格式] 输入包含 ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- AD域的安装(在Windows Server 2003中安装Active Directory)
在Active Directory中提供了一组服务器作为身份验证服务器或登录服务器,这类服务器被称作域控制器(Domain Controller,简称DC).建立一个AD域的过程实际就是在一台运行Wi ...
- WIN 2003服务器终极安全及问题解决方案
一.硬盘分区与操 作系统的安装硬盘分区 总的来讲在硬盘分区上面没什么值得深入剖析的地方,无非就是一个在分区前做好规划知道要去放些什么东西, 如果实在不知 道.那就只一个硬盘只分一个区,分区要一次性完成 ...
- delete this及堆破坏检测方法
作者: Bruce 日期: 2012年06月03日 04:20 周日 发表评论 (0) 查看评论 --END*1--> 0 条评论 --END*2-->1,837 人阅读 程序BU ...
- Windows 2003 Server 标准版启动问题解决(资源转贴)
维护的系统之一是部署在windows2003 Server标准版的服务器上,可能是由于某个应用问题,导致远程重启失败,害得我在机房呆了一早晨,可算是够折腾的.最后按照官方文档解决,刚放文档地址是:ht ...
- 以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件
以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件 2007/10/29 Mark BukovecEmpire Down Development 适用于:Mi ...
- Tarjan求有向图强连通详解
Tarjan求有向图强连通详解 注*该文章为转发,原文出处已经不得而知 :first-child { margin-top: 0; } blockquote > :last-child { ma ...
- POJ 2337 Catenyms (有向图欧拉路径,求字典序最小的解)
Catenyms Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8756 Accepted: 2306 Descript ...
随机推荐
- Compare Version Number
package cn.edu.xidian.sselab.string; /** * * @author zhiyong wang * title: Compare Version Numbers ...
- -_-#【Better JS Code】严格模式
要在整个脚本中启用严格模式,可以在顶部添加如下代码: "use strict"; 这行代码看起来像是字符串,而且也没有赋值给任何变量,但其实它是一个编译指示,用于告诉支持的 Jav ...
- awk合并文件一例
群里的朋友求助: $ cat file1a 1 2 3b 2 3 4c 3 4 5 $ cat file2d 你b 好c 吗 合并两个文件,需要实现: a 1 2 3b 2 3 4 好c 3 4 5 ...
- 【转】Android与JNI(二) -- 不错
原文网址:http://www.cnblogs.com/eddy-he/archive/2012/08/09/2629974.html 软件版本: ubuntu10.04 java version & ...
- 转:VS2010解决方案转换到VS2008
原文链接地址:http://www.codeproject.com/Tips/80953/Converting-VS2010-Solution-to-VS2008 如果你使用VS2010的任何版本写代 ...
- hibernate生成查询语句但查不到数据
hibernate能够生成查询语句 说明它已经进行了查询操作 返回结果数据记录为0 很可能出现的情况 是 :该查询未未访问到指定数据库表. 当使用的数据库为oracle数据库时,你会在bean配置 ...
- Java中基本数据类型和包装器类型的关系
在程序设计中经常用到一系列的数据类型,在Java中也一样包含八中数据类型,这八种数据类型又各自对应一种包装器类型.如下表: 基本类型 包装器类型 boolean Boolean char Charac ...
- nginx 请求负载 转发规则设置
(1)轮询(默认) weight=5; #本机上的Squid开启3128端口,不是必须要squid server 192.168.8.2x:80 weight=1 ...
- 自己去看dubbo源码
编译Dubbo源码并测试 2014.09.24 | Comments 转http://blog.javachen.com/2014/09/24/compile-and-test-dubbo.html ...
- @property的特性
@property还有一些关键字,它们都是有特殊作用的,比如上述代码中的nonatomic,strong: 1 2 @property(nonatomic,strong) NSString *carN ...