POJ2584 T-Shirt Gumbo——网络最大流模板
题目:http://poj.org/problem?id=2584
像模板一样的简单题。继续使用 & 的当前弧优化和神奇的构造函数。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int n,head[],dfn[],cur[],l,r,mxflow,xnt,x,t;
const int INF=;
char tmp[],tm1,tm2;
struct Edge{
int next,to,cap;
Edge(int a=,int b=,int c=):next(a),to(b),cap(c) {}
}edge[];
queue<int> q;
int num(char c)
{
if(c=='S')return +n;if(c=='L')return +n;
if(c=='M')return +n;if(c=='X')return +n;if(c=='T')return +n;
}
bool bfs()
{
memset(dfn,,sizeof dfn);
while(!q.empty())q.pop();
dfn[]=;
q.push();
while(!q.empty())
{
int k=q.front();q.pop();
for(int i=head[k],v;i;i=edge[i].next)
if(!dfn[v=edge[i].to]&&edge[i].cap)
{
dfn[v]=dfn[k]+;
q.push(v);
if(v==t)break;
}
}
return dfn[t];
}
int dfs(int k,int flow)
{
if(k==t)return flow;
int used=;
for(int& i=cur[k],v;i;i=edge[i].next)
if(dfn[v=edge[i].to]==dfn[k]+&&edge[i].cap)
{
int tmp=dfs(v,min(flow-used,edge[i].cap));
if(!tmp)dfn[v]=;
used+=tmp;
edge[i].cap-=tmp;
edge[i^].cap+=tmp;
if(used==flow)return used;
}
return used;
}
int main()
{
while()
{
cin>>tmp;
if(tmp[]=='E')return ;
scanf("%d ",&n);
memset(head,,sizeof head);
t=n+;mxflow=;xnt=;
for(int i=;i<=n;i++)
{
edge[++xnt]=Edge(head[],i,);head[]=xnt;
edge[++xnt]=Edge(head[i],,);head[i]=xnt;
scanf("%c%c ",&tm1,&tm2);
l=num(tm1);r=num(tm2);
for(int j=l;j<=r;j++)
{
edge[++xnt]=Edge(head[i],j,);head[i]=xnt;
edge[++xnt]=Edge(head[j],i,);head[j]=xnt;
}
}
for(int i=+n;i<=+n;i++)
{
scanf("%d",&x);
edge[++xnt]=Edge(head[i],t,x);head[i]=xnt;
edge[++xnt]=Edge(head[t],i,);head[t]=xnt;
}
cin>>tmp;
while(bfs())
{
memcpy(cur,head,sizeof head);
mxflow+=dfs(,INF);
}
if(mxflow==n)
printf("T-shirts rock!\n");
else printf("I'd rather not wear a shirt anyway...\n");
}
}
POJ2584 T-Shirt Gumbo——网络最大流模板的更多相关文章
- 【Luogu】P3376网络最大流模板(Dinic)
最大流模板成为另一个被攻克的模板题. 今天QDC给我讲了一下Dinic,感觉很好懂.于是为了巩固就把这道题A掉了. 核心思想就是不断BFS分层,然后不断DFS找增广路.找不到之后就可以把答案累加输出了 ...
- P3376 网络最大流模板(Dinic + dfs多路增广优化 + 炸点优化 + 当前弧优化)
### P3376 题目链接 ### 这里讲一下三种优化的实现以及正确性. 1.dfs多路增广优化 一般的Dinic算法中是这样的,bfs() 用于标记多条增广路,以至于能一次 bfs() 出多次 d ...
- 图论算法-网络最大流【EK;Dinic】
图论算法-网络最大流模板[EK;Dinic] EK模板 每次找出增广后残量网络中的最小残量增加流量 const int inf=1e9; int n,m,s,t; struct node{int v, ...
- P3376 【模板】网络最大流
P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...
- 洛谷 P3376 【【模板】网络最大流】
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行包含三个正整数ui. ...
- 洛谷 P3376 【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- 洛谷——P3376 【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- P3376 【模板】网络最大流dinic算法
P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...
- 「LuoguP3376」 【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
随机推荐
- IntelliJ IDEA 自动导入包 快捷方式 关闭重复代码提示
idea可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置 设置idea导入包 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化 ...
- oracle 产生一个任意大小的随机数
SELECT DBMS_RANDOM.RANDOM FROM DUAL; 产生一个任意大小的随机数 SELECT ABS(MOD(DBMS_RANDOM.RANDOM,100)) F ...
- swiper中的默认值的属性和作用(小程序交流群:604788754)
swiper中的重要属性: vertical:属性,控制swiper效果是水平切换滚动,还是垂直切换滚动.如果不设置此属性,默认是水平滚动,如果设置:vertical="true" ...
- AsyncTask 异步任务 的用法(并且使用ORMlite关系数据库);
package com.lixu.asynctask; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.tab ...
- EClassNotFound
---------------------------Debugger Exception Notification---------------------------Project Project ...
- .net WebService方法之重载、支持Session、支持request请求和response格式的浅析
.net的webservice不支持web方法的重载,但是可以通过设置WebMethod属性的MessageName字段来达到重载web方法的目的. 通过设置WebMethod属性的EnableSes ...
- 对多维向量vector<vector<int> > vec进行操作
直接写作vector<vector<int> > vec在VC++6.0下编译不过改做: typedef std::vector<int> ROW; s ...
- React 源码剖析系列 - 不可思议的 react diff
简单点的重复利用已有的dom和其他REACT性能快的原理. key的作用和虚拟节点 目前,前端领域中 React 势头正盛,使用者众多却少有能够深入剖析内部实现机制和原理. 本系列文章希望通过剖析 ...
- nw + iframe嵌入page 滚动条问题
iframe 加载完之后会在原尺寸基础上增加4像素(因此我用以下方法处理): <iframe id="myiframe" style="visibility: hi ...
- Grunt新手入门篇
今天看到一篇通俗易懂的Grunt入门文章,博主写得很用心,原文请戳:http://yujiangshui.com/grunt-basic-tutorial/ 当时学习 Grunt 的时候,真是很头疼. ...