题目: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——网络最大流模板的更多相关文章

  1. 【Luogu】P3376网络最大流模板(Dinic)

    最大流模板成为另一个被攻克的模板题. 今天QDC给我讲了一下Dinic,感觉很好懂.于是为了巩固就把这道题A掉了. 核心思想就是不断BFS分层,然后不断DFS找增广路.找不到之后就可以把答案累加输出了 ...

  2. P3376 网络最大流模板(Dinic + dfs多路增广优化 + 炸点优化 + 当前弧优化)

    ### P3376 题目链接 ### 这里讲一下三种优化的实现以及正确性. 1.dfs多路增广优化 一般的Dinic算法中是这样的,bfs() 用于标记多条增广路,以至于能一次 bfs() 出多次 d ...

  3. 图论算法-网络最大流【EK;Dinic】

    图论算法-网络最大流模板[EK;Dinic] EK模板 每次找出增广后残量网络中的最小残量增加流量 const int inf=1e9; int n,m,s,t; struct node{int v, ...

  4. P3376 【模板】网络最大流

    P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...

  5. 洛谷 P3376 【【模板】网络最大流】

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行包含三个正整数ui. ...

  6. 洛谷 P3376 【模板】网络最大流

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...

  7. 洛谷——P3376 【模板】网络最大流

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...

  8. P3376 【模板】网络最大流dinic算法

    P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...

  9. 「LuoguP3376」 【模板】网络最大流

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...

随机推荐

  1. IntelliJ IDEA 自动导入包 快捷方式 关闭重复代码提示

    idea可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置 设置idea导入包 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化 ...

  2. oracle 产生一个任意大小的随机数

    SELECT DBMS_RANDOM.RANDOM FROM DUAL;          产生一个任意大小的随机数 SELECT ABS(MOD(DBMS_RANDOM.RANDOM,100)) F ...

  3. swiper中的默认值的属性和作用(小程序交流群:604788754)

    swiper中的重要属性: vertical:属性,控制swiper效果是水平切换滚动,还是垂直切换滚动.如果不设置此属性,默认是水平滚动,如果设置:vertical="true" ...

  4. AsyncTask 异步任务 的用法(并且使用ORMlite关系数据库);

    package com.lixu.asynctask; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.tab ...

  5. EClassNotFound

    ---------------------------Debugger Exception Notification---------------------------Project Project ...

  6. .net WebService方法之重载、支持Session、支持request请求和response格式的浅析

    .net的webservice不支持web方法的重载,但是可以通过设置WebMethod属性的MessageName字段来达到重载web方法的目的. 通过设置WebMethod属性的EnableSes ...

  7. 对多维向量vector<vector<int> > vec进行操作

    直接写作vector<vector<int> > vec在VC++6.0下编译不过改做:    typedef std::vector<int> ROW;    s ...

  8. React 源码剖析系列 - 不可思议的 react diff

      简单点的重复利用已有的dom和其他REACT性能快的原理. key的作用和虚拟节点 目前,前端领域中 React 势头正盛,使用者众多却少有能够深入剖析内部实现机制和原理. 本系列文章希望通过剖析 ...

  9. nw + iframe嵌入page 滚动条问题

    iframe 加载完之后会在原尺寸基础上增加4像素(因此我用以下方法处理): <iframe id="myiframe" style="visibility: hi ...

  10. Grunt新手入门篇

    今天看到一篇通俗易懂的Grunt入门文章,博主写得很用心,原文请戳:http://yujiangshui.com/grunt-basic-tutorial/ 当时学习 Grunt 的时候,真是很头疼. ...