poj1087&&hdu1526 最大流
多源多汇。
比较明显的建图。对于电器,可以从源点与各个电器相连,容量为1,表示这个电器有1个,然后对于各种接头,那可以各个接头与汇点相连,容量为1,表示每个接头只能用一次。
然后对于能够相互转换的接头,其容量为无穷,文中写到转换器可以无穷使用。然后对于电器和其使用的接头,相连,容量为1表示该电器使用该接头。然后求一次最大流,表示最多可以使用的电器,然后见一下即可。
由于字符串,用map搞了半天。
poj 79MS
hdu 15MS
下面是poj代码:
#include<stdio.h>
#include<string.h>
#include<string>
#include<map>
#include<queue>
#include<iostream>
#define maxn 500
#define INF 9999999
using namespace std;
map<string,int>d,num;
int mp[maxn][maxn],n,m,fn,vis[maxn],F;//fn表示插头的种类数
string name,s1,s2;
string s[],fname[];
int min(int x,int y)
{return x<y?x:y;}
void makemap()
{
int i,j;
for(i=;i<m;i++)
{
mp[d[s[i]]][d[fname[i]]]=;
//printf("%d %d\n",d[s[i]],d[fname[i]]);
}
for(i=;i<=F;i++)
{
mp[i][n+]=;
}
for(i=fn+;i<=n;i++)
{
mp[][i]=;
}
}
int BFS()
{
int i,j;
queue<int>q;
memset(vis,-,sizeof(vis));
vis[]=;
q.push();
while(!q.empty())
{
int t=q.front();
q.pop();
for(i=;i<=n+;i++)
{
if(vis[i]<&&mp[t][i])
{
vis[i]=vis[t]+;
q.push(i);
}
}
}
if(vis[n+]>)
return ;
return ;
}
int dfs(int u,int low)
{
int i,j,a;
if(n+==u)
return low;
for(i=;i<=n+;i++)
{
if(vis[i]==vis[u]+&&mp[u][i])
{
a=dfs(i,min(low,mp[u][i]));
if(!a)continue;
mp[u][i]-=a;
mp[i][u]+=a;
return a;
}
}
return ;
}
int main()
{
int t,i,j,cou=;
while(scanf("%d",&F)!=EOF)
{
memset(mp,,sizeof(mp));
for(i=;i<F;i++)
{
cin>>name;
d[name]=cou++;
}
scanf("%d",&m);
for(i=;i<m;i++)
{
cin>>s[i];
cin>>fname[i];
if(!d[fname[i]])
d[fname[i]]=cou++;
}
fn=cou-;
//printf("%d\n",fn);
for(i=;i<m;i++)
{
if(!d[s[i]])
d[s[i]]=cou++;
}
n=cou-;
makemap();
//printf("%d\n",n);
scanf("%d",&t);
for(i=;i<t;i++)
{
cin>>s1>>s2;
mp[d[s1]][d[s2]]=INF;
}
//printf("%d\n",d[s[0]]);
/*for(i=0;i<=n+1;i++)
{
for(j=0;j<=n+1;j++)
{
printf("%d ",mp[i][j]);
}
printf("\n");
}*/
int ans=;
while(BFS())
{
while()
{
int a=dfs(,INF);
if(!a)break;
ans+=a;
}
}
printf("%d\n",m-ans);
}
}
hdu比较坑,爆栈,然后加了一句话#pragma comment(linker, "/STACK:1024000000,1024000000")
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<stdio.h>
#include<string.h>
#include<string>
#include<map>
#include<queue>
#include<iostream>
#define maxn 500
#define INF 9999999
using namespace std;
map<string,int>d,num;
int mp[maxn][maxn],n,m,fn,vis[maxn],F;//fn表示插头的种类数
string name,s1,s2;
string s[],fname[];
int min(int x,int y)
{return x<y?x:y;}
void makemap()
{
int i,j;
for(i=;i<m;i++)
{
mp[d[s[i]]][d[fname[i]]]=;
//printf("%d %d\n",d[s[i]],d[fname[i]]);
}
for(i=;i<=F;i++)
{
mp[i][n+]=;
}
for(i=fn+;i<=n;i++)
{
mp[][i]=;
}
}
int BFS()
{
int i,j;
queue<int>q;
memset(vis,-,sizeof(vis));
vis[]=;
q.push();
while(!q.empty())
{
int t=q.front();
q.pop();
for(i=;i<=n+;i++)
{
if(vis[i]<&&mp[t][i])
{
vis[i]=vis[t]+;
q.push(i);
}
}
}
if(vis[n+]>)
return ;
return ;
}
int dfs(int u,int low)
{
int i,j,a;
if(n+==u)
return low;
for(i=;i<=n+;i++)
{
if(vis[i]==vis[u]+&&mp[u][i])
{
a=dfs(i,min(low,mp[u][i]));
if(!a)continue;
mp[u][i]-=a;
mp[i][u]+=a;
return a;
}
}
return ;
}
int main()
{
int t,i,j,cou,ft;
scanf("%d",&ft);
while(ft--)
{
cou=;
scanf("%d",&F);
memset(mp,,sizeof(mp));
d.clear(); for(i=;i<F;i++)
{
cin>>name;
d[name]=cou++;
}
scanf("%d",&m);
for(i=;i<m;i++)
{
cin>>s[i];
cin>>fname[i];
if(!d[fname[i]])
d[fname[i]]=cou++;
}
fn=cou-;
//printf("%d\n",fn);
for(i=;i<m;i++)
{
if(!d[s[i]])
d[s[i]]=cou++;
}
n=cou-;
makemap();
//printf("%d\n",n);
scanf("%d",&t);
for(i=;i<t;i++)
{
cin>>s1>>s2;
mp[d[s1]][d[s2]]=INF;
}
//printf("%d\n",d[s[0]]);
/*for(i=0;i<=n+1;i++)
{
for(j=0;j<=n+1;j++)
{
printf("%d ",mp[i][j]);
}
printf("\n");
}*/
int ans=;
while(BFS())
{
while()
{
int a=dfs(,INF);
if(!a)break;
ans+=a;
}
}
printf("%d\n",m-ans);
if(ft)printf("\n");
}
}
poj1087&&hdu1526 最大流的更多相关文章
- aPlugForUNIX(POJ-1087)【最大流】
题目链接:https://vjudge.net/problem/POJ-1087 题意:有N个插座,M个电器,K种转换头(每种转换头有无限多个),求最多能同时给多少台设备供电 思路: 首先,建立源点和 ...
- poj1087(最大流)
传送门:A Plug for UNIX 题意:有插座用电器和适配器,用电器有插头,适配器本身有一个插孔和插头,它的作用是可以把别的插头插入到适合该适配器插孔的适配器,然后就可以用适配器的插头接到适合的 ...
- poj1087 A Plug for UNIX & poj1459 Power Network (最大流)
读题比做题难系列…… poj1087 输入n,代表插座个数,接下来分别输入n个插座,字母表示.把插座看做最大流源点,连接到一个点做最大源点,流量为1. 输入m,代表电器个数,接下来分别输入m个电器,字 ...
- POJ1087:A Plug for UNIX(最大流)
A Plug for UNIX 题目链接:https://vjudge.net/problem/POJ-1087 Description: You are in charge of setting u ...
- POJ1087 A Plug for UNIX —— 最大流
题目链接:https://vjudge.net/problem/POJ-1087 A Plug for UNIX Time Limit: 1000MS Memory Limit: 65536K T ...
- POJ-1087(最大流+EK算法)
A Plug for UNIX POJ-1087 这一题也是最大流的应用,但是题目有点绕. 题目的意思就是有插座和插头,只不过这里使用设备取代了插头.只有插座和设备进行匹配了. 题目要注意的是那个适配 ...
- poj1087 A Plug for UNIX(网络流最大流)
http://poj.org/problem?id=1087 好久没遇见过这么坑的题了这个题真是挫的够可以的.题目大意:你作为某高管去住宿了,然后宾馆里有几种插座,分别有其对应型号,你携带了几种用电器 ...
- 【uva753/poj1087/hdu1526-A Plug for UNIX】最大流
题意:给定n个插座,m个插头,k个转换器(x,y),转换器可以让插头x转成插头y.问最少有多少个插头被剩下. 题解: 最大流或者二分图匹配.然而我不知道怎么打二分图匹配..打了最大流.这题字符串比较坑 ...
- 【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 ...
随机推荐
- 关于开启Eureka安全Security认证后,客户端死活注册不上的问题
遇到一个问题"开启Eureka服务端的安全认证后,客户端死活注册不到Eureka上",已经尝试了以下办法,完全搞不定... 客户端出错的版本: spring-boot:2.0.3. ...
- Device eth0 does not seem to be present, delaying initialization(VM虚拟机restart service出现此错误)
>从vmware workstation中克隆(clone)了一个redhat6.0的虚拟机,启动之后发现网卡没有启动.于是重启一下network服务,发现提示错误信息“Device eth0 ...
- Redis源码解析:11RDB持久化
Redis的RDB持久化的相关功能主要是在src/rdb.c中实现的.RDB文件是具有一定编码格式的数据文件,因此src/rdb.c中大部分代码都是处理数据格式的问题. 一:RDB文件格式 上图就是一 ...
- 【python之路28】模块python与excel
一.可使用的第三方库 python中处理excel表格,常用的库有xlrd(读excel)表.xlwt(写excel)表.openpyxl(可读写excel表)等.xlrd读数据较大的excel表时效 ...
- flexget安装
首先新建一个文件夹给flexget下载种子 Flexgetdownloads 注意:如果先安装flexget再创建文件夹则需要手动去分配权限 然后通过勾选我要试用beta版本,来获取flexget 找 ...
- 类的加载classload和类对象的生成
在Java中最重要的可以说就是类的加载了.不论我们编写的功能多么复杂,或是多么简单,永远逃离不开的,就是将这个类从class文件加载到JVM中来. 类的加载过程 首先我们要了解一下类的加载过程,包括: ...
- 2019.9.16 csp-s模拟测试44 反思总结
虽然说好像没有什么写这个的价值OAO 来了来了来写总结了,不能怨任何东西,就是自己垃圾x 开题顺序又和主流背道而驰,先一头扎进了公认最迷的T2,瞎搞两个小时头铁出来,然后T1和T3爆炸.基础很差,全靠 ...
- day38 10-Spring的Bean的属性的注入
后处理bean,如果是返回bean,那么什么都不做直接把这个类原封不动地给你返回回去. 在它执行一些逻辑方法的时候对它进行逻辑增强,比如说进行时间监控,权限管理,日志的记录等等. 要做肯定是对正常的类 ...
- linux性能监视工具sar
sar是一个优秀的一般性能监视工具,它可以输出Linux所完成的几乎所有工作的数据.sar命令在sysetat rpm中提供.示例中使用sysstat版本5.0.5,这是稳定的最新版本之一.关于版本和 ...
- 初探Druid
说到连接池,最常见的就是dbcp和c3p0,关于druid,官方定义是为监控而生的数据库连接池. 官方中文文档地址:https://github.com/alibaba/druid/wiki/%E5% ...