采用EK算法解网络流经典题,本题构图思路比较明确。

//Unix会议室插座转换
//网络流-EK算法
//Time:47Ms Memory:1188K
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std; #define MAX 505
#define MAXS 25
#define INF 0x3f3f3f3f int n,m,k;
int s,t;
int res[MAX][MAX]; //残留网络
int pre[MAX];
int len; //插头种类数
int no[MAX]; //插头下标编号
char trans[MAX][MAXS]; //插头名称 int getNum(char *str) //插头名称->编号
{
for(int i = 0; i < len; i++)
{
if(!strcmp(trans[i], str))
return no[i];
}
return -1;
} bool bfs()
{
memset(pre,-1,sizeof(pre));
queue<int> q;
q.push(s); pre[s] = 0;
while(!q.empty()){
int cur = q.front();
q.pop();
for(int i = 1; i <= t; i++)
{
if(pre[i] == -1 && res[cur][i])
{
pre[i] = cur;
if(i == t) return true;
q.push(i);
}
}
}
return false;
} int EK()
{
int maxFlow = 0;
while(bfs())
{
int mind = INF;
for(int i = t; i != s; i = pre[i])
mind = min(mind, res[pre[i]][i]);
for(int i = t; i != s; i = pre[i])
{
res[pre[i]][i] -= mind;
res[i][pre[i]] += mind;
}
maxFlow += mind;
}
return maxFlow;
} int main()
{
//freopen("in.txt", "r", stdin); memset(res,0,sizeof(res));
scanf("%d", &n);
s = 0; t = n+1; //汇点在不断更新
len = 0;
for(int i = 1; i <= n; i++)
{
no[len] = i;
scanf("%s", trans[len++]);
}
scanf("%d", &m);
t += m;
int num[2];
char str[2][MAXS];
for(int i = n+1; i <= n+m; i++)
{
scanf("%s%s", str[0], str[1]);
int num = getNum(str[1]);
if(num == -1)
{
no[len] = num = t++;
strcpy(trans[len++], str[1]);
}
res[s][i] = res[i][num] = 1;
}
scanf("%d", &k);
for(int i = 0; i < k; i++)
{
scanf("%s%s", str[0], str[1]);
for(int j = 0; j < 2; j++){
num[j] = getNum(str[j]);
if(num[j] == -1)
{
no[len] = num[j] = t++;
strcpy(trans[len++], str[j]);
}
}
res[num[0]][num[1]] = INF;
}
//汇点已固定-更新汇点的邻接边
for(int i = 1; i <= n; i++)
res[i][t] = 1;
printf("%d\n", m - EK()); return 0;
}

ACM/ICPC 之 Unix会议室(POJ1087)的更多相关文章

  1. 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛

    比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...

  2. ACM/ICPC 之 BFS(离线)+康拓展开(TSH OJ-玩具(Toy))

    祝大家新年快乐,相信在新的一年里一定有我们自己的梦! 这是一个简化的魔板问题,只需输出步骤即可. 玩具(Toy) 描述 ZC神最擅长逻辑推理,一日,他给大家讲述起自己儿时的数字玩具. 该玩具酷似魔方, ...

  3. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering

    Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...

  4. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 D. Delay Time

    Problem D. Delay Time Input file: standard input Output file: standard output Time limit: 1 second M ...

  5. hduoj 4710 Balls Rearrangement 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4710 Balls Rearrangement Time Limit: 6000/3000 MS (Java/Ot ...

  6. 【转】lonekight@xmu·ACM/ICPC 回忆录

    转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...

  7. 【转】ACM/ICPC生涯总结暨退役宣言—alpc55

    转自:http://hi.baidu.com/accplaystation/item/ca4c2ec565fa0b7fced4f811 ACM/ICPC生涯总结暨退役宣言—alpc55 前言 早就该写 ...

  8. hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4708 Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/O ...

  9. hduoj 4715 Difference Between Primes 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4715 Difference Between Primes Time Limit: 2000/1000 MS (J ...

随机推荐

  1. Type.IsContextful 说明

    首先看MSDN的说明: 中文:获取一个值,通过该值指示 Type 在上下文中是否可以被承载. 英文:Gets a value indicating whether the Type can be ho ...

  2. 经典SQL语句大全

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

  3. HiKariCP的数据源配置

    <!-- Hikari Datasource --> <bean id="dataSourceHikari" class="com.zaxxer.hik ...

  4. CSS选定第k个元素

    <!DOCTYPE html> <html> <head> <title></title> <style type="tex ...

  5. 状态栏消息提示——使用Notification

    什么是Notification Notification用于在状态栏显示信息.这些信息一般来源于app的消息推送,或应用的一些功能控制(如播放器) Notification的两种视图 普通视图 借用官 ...

  6. 使用最快速的方式激活windows10专业版

    1.安装win10专业版 2.在桌面新建“文本文档.txt” 3.复制如下代码到新新建的“文本文档.txt”中 slmgr /ipk VK7JG-NPHTM-C97JM-9MPGT-3V66T slm ...

  7. 菜鸟初识python request属性及方法说明

    if  request.REQUEST.has_key('键值'): HttpRequest对象的属性 参考: 表 H-1. HttpRequest对象的属性 属性 描述 path 表示提交请求页面完 ...

  8. elasticsearch agg

    OK curl -XGET http://21.3.5.121:9200/ipv4geo/service/_count -d '{"query":{"match" ...

  9. 直接操作 SDL_Overlay YUV叠加上的像素

    根据这篇解码出yuv数据后 海思h264解码库 y,u,v数据全部存进数组内,          IntPtr y = _decodeFrame.pY;                 IntPtr ...

  10. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【开篇】【持续更新中。。。】

    最近发现web api很火,园内也有各种大神已经在研究,本人在asp.net官网上看到一个系列教程,原文地址:http://bitoftech.net/2013/11/25/detailed-tuto ...