bzoj2718
二分图匹配
首先有个定理:最长反链=最小链覆盖
最小链覆盖可以重复经过点
所以我们不能直接建图
那么我们用floyd判断是否相连
然后建图就行了
#include<bits/stdc++.h>
using namespace std;
const int N = , inf = 1e9;
int rd()
{
int x = , f = ; char c = getchar();
while(c < '' || c > '') { if(c == '-') f = -; c = getchar(); }
while(c >= '' && c <= '') { x = x * + c - ''; c = getchar(); }
return x * f;
}
int n, m, k, D, source, sink, cnt = , tot;
int a[N], d[N], head[N], iter[N], Map[N][N];
struct edge {
int nxt, to, f;
} e[N * N];
bool bfs()
{
queue<int> q;
memset(d, -, sizeof(d));
d[source] = ;
q.push(source);
while(!q.empty())
{
int u = q.front();
q.pop();
for(int i = head[u]; i; i = e[i].nxt) if(d[e[i].to] == - && e[i].f)
{
d[e[i].to] = d[u] + ;
q.push(e[i].to);
}
}
return d[sink] != -;
}
int dfs(int u, int delta)
{
if(u == sink) return delta;
int ret = ;
for(int &i = iter[u]; i && delta; i = e[i].nxt) if(d[e[i].to] == d[u] + && e[i].f)
{
int x = dfs(e[i].to, min(delta, e[i].f));
ret += x;
delta -= x;
e[i].f -= x;
e[i ^ ].f += x;
}
return ret;
}
int dinic()
{
int ret = ;
while(bfs())
{
for(int i = source; i <= sink; ++i) iter[i] = head[i];
ret += dfs(source, inf);
}
return ret;
}
void link(int u, int v, int f)
{
e[++cnt].nxt = head[u];
head[u] = cnt;
e[cnt].to = v;
e[cnt].f = f;
}
void insert(int u, int v, int f)
{
link(u, v, f);
link(v, u, );
}
int main()
{
scanf("%d%d", &n, &m);
sink = * n + ;
for(int i = ; i <= m; ++i)
{
int u, v;
scanf("%d%d", &u, &v);
Map[u][v] = ;
}
for(int k = ; k <= n; ++k)
{
insert(source, k, );
insert(k + n, sink, );
for(int i = ; i <= n; ++i)
for(int j = ; j <= n; ++j)
Map[i][j] |= (Map[i][k] & Map[k][j]);
}
for(int i = ; i <= n; ++i)
for(int j = ; j <= n; ++j) if(Map[i][j])
insert(i, j + n, );
printf("%d\n", n - dinic());
return ;
}
bzoj2718的更多相关文章
- BZOJ-1143&&BZOJ-2718 祭祀river&&毕业旅行 最长反链(Floyed传递闭包+二分图匹配)
蛋蛋安利的双倍经验题 1143: [CTSC2008]祭祀river Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1901 Solved: 951 ...
- BZOJ2718: [Violet 4]毕业旅行
2718: [Violet 4]毕业旅行 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 229 Solved: 126[Submit][Status ...
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- BZOJ刷题列表【转载于hzwer】
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...
随机推荐
- vue2.0 自定义 弹窗(MessageBox)组件
组件模板 src/components/MessageBox/index.vue <!-- 自定义 MessageBox 组件 --> <template> <div c ...
- 江湖问题研究-- intent传递有没有限制大小,是多少?
出门一步,便是江湖.江湖上有很多流言. 比方这条: intent传递是有限制大小的,详细在40KB左右. 当然也有传言说是1M左右. 数百头母驴为何半夜慘叫? 小卖部安全套为何屡遭黑手? 女生宿舍内裤 ...
- Java中HashMap遍历的两种方法(转)
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...
- hdoj 2188 悼念512汶川大地震遇难同胞——选拔志愿者 【巴什博弈】
题意:. . . 策略:最简单的典型的巴什博弈. 代码: #include<stdio.h> int main() { int n, m; int t; scanf("%d&qu ...
- 实战c++中的string系列--十六进制的字符串转为十六进制的整型(一般是颜色代码使用)
非常久没有写关于string的博客了.由于写的差点儿相同了.可是近期又与string打交道,于是荷尔蒙上脑,小蝌蚪躁动. 在程序中,假设用到了颜色代码,一般都是十六进制的,即hex. 可是server ...
- Solaris设备管理
接手一台服务器,如何了解它的软硬件配置 数据库可以装在裸设备上,何为裸设备 知识点: 内核 驱动程序 设备命名 设备访问方式 磁盘的管理 内核: 指挥硬件干活的工具,shell翻译官,将人类语言翻译为 ...
- 日志打印longging模块(控制台和文件同时输出)
在把日志写入文件的同时在控制台输出 示例代码如下: #coding=utf-8 import logging import time import os dir = os.path.dirname(o ...
- 基于HTML,css,jQuery,JavaScript,MySQL搭建博客系统
一.登陆注册 二.登录验证码相关 三.博客首页显示相关 四.当前用户的家目录显示 五.点赞以及取消 六.父评论以及子评论操作 七.后台管理首页 八.文章的操作(增.删,改) 九.文件上传问题 十.me ...
- Apache Server与多个独立Tomcat集成
取经自http://www.ramkitech.com/2012/03/virtual-host-apache-httpd-server-tomcat.html 继续干Tomcat和Apache Se ...
- crm操作销售订单实体
using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; using Microsoft.Cr ...