最大流。

流可以对应一种分配方式。

显然最大流就可以表示最多匹配数

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
 + ;
 + ;
;
const int inf = 0x3f3f3f3f;

char s[maxn][maxl],t[maxl],t2[maxl];
int g[maxn],v[maxm],nex[maxm],f[maxm],eid;
int id[maxn],vid;
int S,T;
int d[maxn],gap[maxn];
int n,m,k,a1,a2;

void addedge(int a,int b,int F) {
    v[eid]=b; f[eid]=F; nex[eid]=g[a]; g[a]=eid++;
    v[eid]=a; f[eid]=; nex[eid]=g[b]; g[b]=eid++;
}

void build() {
    memset(g,-,;
    vid=;
    S=++vid; T=++vid;
    scanf("%d",&n);
    ;i<=n;i++) {
        scanf("%s",s[i]);
        id[i]=;
        ;j<i;j++) ) {
            id[i]=id[j];
            break;
        }
        if(!id[i]) id[i]=++vid;
        addedge(id[i],T,);
        //printf("id[%d]=%d\n",i,id[i]);
    }
    scanf("%d",&m);
    ;i<=n+m;i++) {
        scanf("%s",t);
        scanf("%s",s[i]);
        id[i]=;
        ;j<i;j++) ) {
            id[i]=id[j];
            break;
        }
        if(!id[i]) id[i]=++vid;
        addedge(S,id[i],);
        //printf("id[%d]=%d\n",i,id[i]);
    }
    scanf("%d",&k);
    ;i<=k;i++) {
        scanf("%s",t);
        scanf("%s",t2);
        ;j<=n+m;j++) ) {a1=id[j]; break;}
        ;j<=n+m;j++) ) {a2=id[j]; break;}
        addedge(a1,a2,inf);
        //printf("%d %d\n",a1,a2);
    }
}

int ISAP(int u,int flow) {
    if(u==T) return flow;
    ,aug,mindist=vid;

    for(int i=g[u];~i;i=nex[i])
        ==d[u]) {
            aug=ISAP(v[i],min(flow-cur,f[i]));
            cur+=aug;
            f[i]-=aug;
            f[i^]+=aug;
            if(cur==flow || d[S]>=vid) {
                return cur;
            }
        }

    ) {
        if(!--gap[d[u]]) {
            d[S]=vid;
            return cur;
        }
        for(int i=g[u];~i;i=nex[i]) if(f[i])
            mindist=min(d[v[i]],mindist);
        ++gap[d[u]=mindist+];
    }
    return cur;
}

void solve() {
    memset(d,,sizeof(d));
    memset(gap,,sizeof(gap));
    ;
    gap[]=vid;
    while(d[S]<vid) {
        res+=ISAP(S,inf);

    }
    printf("%d\n",m-res);
}

int main() {
    int T;
    scanf("%d",&T);
    while(T--) {
        build();
        solve();
        if(T) printf("\n");
    }
    ;
}

uva753 A Plug for UNIX的更多相关文章

  1. uva753 A Plug for UNIX 网络流最大流

    C - A Plug for UNIX    You are in charge of setting up the press room for the inaugural meeting of t ...

  2. UVa753/POJ1087_A Plug for UNIX(网络流最大流)(小白书图论专题)

    解题报告 题意: n个插头m个设备k种转换器.求有多少设备无法插入. 思路: 定义源点和汇点,源点和设备相连,容量为1. 汇点和插头相连,容量也为1. 插头和设备相连,容量也为1. 可转换插头相连,容 ...

  3. 【poj1087/uva753】A Plug for UNIX(最大流)

    A Plug for UNIX   Description You are in charge of setting up the press room for the inaugural meeti ...

  4. POJ 1087 A Plug for UNIX / HDU 1526 A Plug for UNIX / ZOJ 1157 A Plug for UNIX / UVA 753 A Plug for UNIX / UVAlive 5418 A Plug for UNIX / SCU 1671 A Plug for UNIX (网络流)

    POJ 1087 A Plug for UNIX / HDU 1526 A Plug for UNIX / ZOJ 1157 A Plug for UNIX / UVA 753 A Plug for ...

  5. UVA 753 A Plug for UNIX(二分图匹配)

    A Plug for UNIX You are in charge of setting up the press room for the inaugural meeting of the Unit ...

  6. A Plug for UNIX 分类: POJ 图论 函数 2015-08-10 14:18 2人阅读 评论(0) 收藏

    A Plug for UNIX Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14786 Accepted: 4994 Desc ...

  7. POJ1087 A Plug for UNIX(网络流)

                                       A Plug for UNIX Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  8. poj 1087 C - A Plug for UNIX 网络流最大流

    C - A Plug for UNIXTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contes ...

  9. UVA 753 - A Plug for UNIX(网络流)

      A Plug for UNIX  You are in charge of setting up the press room for the inaugural meeting of the U ...

随机推荐

  1. Git_1基础操作,从安装到提交完成(windows)

    github地址:https://github.com/zhangsai521314/Git 1:安装Git Bash(https://git-scm.com/),安装一路NEXT. 2:目录架构: ...

  2. SpringMVC中@ResourceMapping的基本用法

    最近从Struts转投SpringMVC,看代码时发现这个注解,感觉其作用应该和Struts的action差不多,把用法记录下来. 1. @RequestMapping(value="/de ...

  3. 使用air进行移动app开发常见功能和问题(一)

    1.  获取最近联系人 思路:侦听Geolocation的update事件,获取经度和纬度信息,再把坐标信息上传至服务器,服务器比较坐标信息算出距离,返回最近位置的若干个人. update时间在2种情 ...

  4. Servlet实现数据库查询(MyEclipse10,Tomcat7.0,JDK1.7,)——Java Web练习(三)

    1.MyEclipse | New Web Project :TestServlet01,修改index.jsp的代码: <%@ page language="java" i ...

  5. 树链剖分-SPOJ375(QTREE)

    QTREE - Query on a tree You are given a tree (an acyclic undirected connected graph) with N nodes, a ...

  6. python实现朴素贝叶斯

    参考:<机器学习实战>- Machine Learning in Action 一. 基本思想  简单的说,用概率的高低来决定数据属于哪一类别,这就是贝叶斯决策理论的核心思想,即选择具有最 ...

  7. ●UOJ 131 [NOI2015] 品酒大会

    题链: http://uoj.ac/problem/131 题解: 网上大多数的方法都是用并查集维护.这里呢,给出另一种自己YY的解法(但实际上本质差不多吧): 后缀数组,RMQ,单调栈 1).预处理 ...

  8. c# 事件和EventManager

    事件 基本用法 关键字event,声明格式为: public event <委托类型> <事件对象> 事件的处理方法:适用于该委托的方法 数据的触发: 绑定同类事件,绑定时,可 ...

  9. 【Vagrant】-NO.130.Vagrant.2 -【Error:the filesystem &quot;vboxsf&quot; is not available】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  10. Spring Boot事务管理(下)

    在上两篇 Spring Boot事务管理(上)和Spring Boot事务管理(中)的基础上介绍注解@Transactional. 5 @Transactional属性 属性 类型 描述 value ...