题目描述

传送门

题解

一眼网络流啊。。。
对于所有的J,s->i,1
对于所有的T,i->t,1
将J和E再拆两个点xi,yi,连边xi->yi,1
对于每一个J能移动到的位置(J或E),连边i->xj,1
对于每一个位置(J或E)能攻击到的T,连边yi->j,1
跑最大流即可
即用流来模拟了攻击的过程

代码

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
#define N 160000
#define inf 2100000000int n,m,s,t,maxflow;bool e[1005][1005];
char str[N];
int tot,point[N],nxt[N],v[N],remain[N];
int deep[N],last[N],cur[N],num[N];
queue <int> q;void addedge(int x,int y,int cap)
{++tot; nxt[tot]=point[x]; point[x]=tot; v[tot]=y; remain[tot]=cap;++tot; nxt[tot]=point[y]; point[y]=tot; v[tot]=x; remain[tot]=0;
}
void bfs(int t)
{for (int i=1;i<=t;++i) deep[i]=t;deep[t]=0;for (int i=1;i<=t;++i) cur[i]=point[i];q.push(t);while (!q.empty()){int now=q.front();q.pop();for (int i=point[now];i!=-1;i=nxt[i])if (deep[v[i]]==t&&remain[i^1]){deep[v[i]]=deep[now]+1;q.push(v[i]);}}
}
int addflow(int s,int t)
{int now=t,ans=inf;while (now!=s){ans=min(ans,remain[last[now]]);now=v[last[now]^1];}now=t;while (now!=s){remain[last[now]]-=ans;remain[last[now]^1]+=ans;now=v[last[now]^1];}return ans;
}
void isap(int s,int t)
{bfs(t);for (int i=1;i<=t;++i) ++num[deep[i]];int now=s;while (deep[s]<t){if (now==t){maxflow+=addflow(s,t);now=s;}bool has_find=0;for (int i=cur[now];i!=-1;i=nxt[i])if (deep[v[i]]+1==deep[now]&&remain[i]){has_find=1;cur[now]=i;last[v[i]]=i;now=v[i];break;}if (!has_find){int minn=t-1;for (int i=point[now];i!=-1;i=nxt[i])if (remain[i]) minn=min(minn,deep[v[i]]);if (!(--num[deep[now]])) break;++num[deep[now]=minn+1];cur[now]=point[now];if (now!=s) now=v[last[now]^1];}}
}
int main()
{scanf("%d%d",&n,&m);scanf("%s",str+1);for (int i=1;i<=m;++i){int x,y;scanf("%d%d",&x,&y);e[x][y]=e[y][x]=1;}s=3*n+1,t=s+1;tot=-1;memset(point,-1,sizeof(point));for (int i=1;i<=n;++i){if (str[i]=='J'){addedge(s,i,1);addedge(i,n+i,1);addedge(n+i,n+n+i,1);for (int j=1;j<=n;++j)if (e[i][j]&&str[j]!='T') addedge(i,n+j,1);}if (str[i]=='T'){addedge(i,t,1);for (int j=1;j<=n;++j)if (e[i][j]&&str[j]!='T') addedge(n+n+j,i,1);}if (str[i]=='E') addedge(n+i,n+n+i,1);}isap(s,t);printf("%d\n",maxflow);
}

[BZOJ1779][Usaco2010 Hol]Cowwar 奶牛战争(最大流)相关推荐

  1. BZOJ 1779. [Usaco2010 Hol]Cowwar 奶牛战争

    传送门 考虑构建网络流模型 把一个流量看成一只奶牛的攻击过程,那么答案就是最大流 因为每只奶牛只能操作一波,所以构造分层图,一层相当于一步 第一层就是初始状态,从 $S$ 向所有 $J$ 奶牛连一条流 ...

  2. COGS——T 803. [USACO Hol10] 政党 || 1776: [Usaco2010 Hol]cowpol 奶牛政坛

    http://www.lydsy.com/JudgeOnline/problem.php?id=1776||http://cogs.pro/cogs/problem/problem.php?pid=8 ...

  3. [Usaco2010 Hol]cowpol 奶牛政坛

    题目描述: 农夫约翰的奶牛住在N (2 <= N <= 200,000)片不同的草地上,标号为1到N.恰好有N-1条单位长度的双向道路,用各种各样的方法连接这些草地.而且从每片草地出发都可 ...

  4. [Usaco2010 Hol]cowpol 奶牛政坛(入门oj Problem 5274)

    第三次发题解哈.有什么表述错误的请见谅(可以提出). 题目源地址:https://www.lydsy.com/JudgeOnline/problem.php?id=1776 文章目录 题目描述 输入 ...

  5. BZOJ1776: [Usaco2010 Hol]cowpol 奶牛政坛

    n<=100000个点的树,每个点属于一个K<=n/2个集合中的一个,每个集合至少两个点,求每个集合中任选两点距离的最大值. 方法一:什么都看不出来,点分,每次只统计经过一个点的每个集合的 ...

  6. 【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡 期望DP+高斯消元

    [BZOJ1778][Usaco2010 Hol]Dotp 驱逐猪猡 Description 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300 ...

  7. BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元

    BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...

  8. [BZOJ 1778][Usaco2010 Hol]Dotp 驱逐猪猡

    1778: [Usaco2010 Hol]Dotp 驱逐猪猡 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 690  Solved: 269 [Sub ...

  9. [Usaco2010 Mar]gather 奶牛大集会

    1827: [Usaco2010 Mar]gather 奶牛大集会 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1129  Solved: 525 [ ...

  10. BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP

    [Usaco2010 Mar]gather 奶牛大集会 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1 ...

最新文章

  1. Python 列表 insert() 方法
  2. thinkphp 模型的创建
  3. 最实用的Office使用技巧
  4. 禁止backspace键(退格键),但输入文本框时不禁止(兼容IE)
  5. k8s之kubebuilder简单理解
  6. 科大星云诗社动态20210222
  7. 数据挖掘之关联分析一(基本概念)
  8. SQL Server 2012安装图解
  9. Java进阶之光!java字符串类型转换为int
  10. SharePoint 2013 Step by Step——How to Create a Lookup Column to Another Site(Cross Site) 阅读目录...
  11. 搭建nuxtjs程序 —— 用户信息 or token怎么不丢失
  12. ACM ICPC 历年真题和资源
  13. mysql5.7 json特性_mysql5.7新增加的JSON数据类型特征介绍
  14. 服务器cpu天梯图多核性能,2020年2月cpu处理器天梯图最新高清大图_处理器天梯排行榜...
  15. 去除小圆点_word中的小圆圈怎么删掉
  16. 基于java的高速公路收费系统 计算机毕业设计
  17. 华为m2青春版android7,华为揽阅m2青春版root方案 ple-703l 机油们嗨起来!
  18. 基于知识图谱的推荐系统(KGRS)综述
  19. 尚硅谷在线教育视频点播
  20. Access数据库常用函数大全

热门文章

  1. Focal-UNet
  2. 科目三远光灯怎么开图解?科三远光灯是往上还是往下
  3. 三阶魔方中心互换_魔方中的数学2-置换的定义
  4. ESP32笔记(7) OpenSSL下载安装
  5. 数据库索引的分类,类型,索引的优缺点,索引的优化
  6. xocde8打印出:Presenting view controllers on detached view controllers is discouraged SettingViewContro
  7. 【UVM基础】3、核心基类和机制
  8. 使用es6模块化出现Access to script at 'file:///... ..from origin 'null' has been blocked。。。错误
  9. html css 忽略,HTML与CSS中易被忽略的基础知识点
  10. 热门智力题 过桥问题和倒水问题