多源多汇。

比较明显的建图。对于电器,可以从源点与各个电器相连,容量为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 最大流的更多相关文章

  1. aPlugForUNIX(POJ-1087)【最大流】

    题目链接:https://vjudge.net/problem/POJ-1087 题意:有N个插座,M个电器,K种转换头(每种转换头有无限多个),求最多能同时给多少台设备供电 思路: 首先,建立源点和 ...

  2. poj1087(最大流)

    传送门:A Plug for UNIX 题意:有插座用电器和适配器,用电器有插头,适配器本身有一个插孔和插头,它的作用是可以把别的插头插入到适合该适配器插孔的适配器,然后就可以用适配器的插头接到适合的 ...

  3. poj1087 A Plug for UNIX & poj1459 Power Network (最大流)

    读题比做题难系列…… poj1087 输入n,代表插座个数,接下来分别输入n个插座,字母表示.把插座看做最大流源点,连接到一个点做最大源点,流量为1. 输入m,代表电器个数,接下来分别输入m个电器,字 ...

  4. POJ1087:A Plug for UNIX(最大流)

    A Plug for UNIX 题目链接:https://vjudge.net/problem/POJ-1087 Description: You are in charge of setting u ...

  5. POJ1087 A Plug for UNIX —— 最大流

    题目链接:https://vjudge.net/problem/POJ-1087 A Plug for UNIX Time Limit: 1000MS   Memory Limit: 65536K T ...

  6. POJ-1087(最大流+EK算法)

    A Plug for UNIX POJ-1087 这一题也是最大流的应用,但是题目有点绕. 题目的意思就是有插座和插头,只不过这里使用设备取代了插头.只有插座和设备进行匹配了. 题目要注意的是那个适配 ...

  7. poj1087 A Plug for UNIX(网络流最大流)

    http://poj.org/problem?id=1087 好久没遇见过这么坑的题了这个题真是挫的够可以的.题目大意:你作为某高管去住宿了,然后宾馆里有几种插座,分别有其对应型号,你携带了几种用电器 ...

  8. 【uva753/poj1087/hdu1526-A Plug for UNIX】最大流

    题意:给定n个插座,m个插头,k个转换器(x,y),转换器可以让插头x转成插头y.问最少有多少个插头被剩下. 题解: 最大流或者二分图匹配.然而我不知道怎么打二分图匹配..打了最大流.这题字符串比较坑 ...

  9. 【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 ...

随机推荐

  1. Matlab---length函数

    1.length函数:计算向量或矩阵的长度 2.用法说明 y = length(x) 函数计算指定向量或矩阵的长度y.如果参数变量x是向量,则返回其长度:如果参数变量是非空矩阵,则length(x)与 ...

  2. 【php实现数据结构】单向链表

    什么是单向链表 链表是以链式存储数据的结构,其不需要连续的存储空间,链表中的数据以节点来表示,每个节点由元素(存储数据)和指针(指向后继节点)组成. 单向链表(也叫单链表)是链表中最简单的一种形式,每 ...

  3. BZOJ1491:1491: [NOI2007]社交网络

    1491: [NOI2007]社交网络 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2204  Solved: 1175[Submit][Status ...

  4. Luogu P1273 有线电视网(树形dp+背包)

    P1273 有线电视网 题面 题目描述 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部 ...

  5. https://vjudge.net/problem/2198221/origin

    https://vjudge.net/problem/2198221/origin逆向思维,原题是人出来,我们处理成人进去,算出来每个人的曼哈顿距离,然后从大到小排序,距离长的先入.走的距离+这个人从 ...

  6. Django项目:CRM(客户关系管理系统)--39--31PerfectCRM实现King_admin编辑多对多限制

    readonly_fields = ('qq', 'consultant','tags',) # 不可修改 # forms.py # ————————19PerfectCRM实现King_admin数 ...

  7. Django项目:CRM(客户关系管理系统)--25--17PerfectCRM实现King_admin单列排序

    登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html {#table_data_list.html#} {## ————————08PerfectCR ...

  8. ES6--反引号的使用

    /*动态初始退出登出框话模态框*/ /*动态的初始化退出登陆模态框 反引号ES6语法 * 为什么在使用字符串格式直接创建模态框 * 1.不能在html页面中创建模板,因为如果换一个页面就没有对应的模板 ...

  9. 详解PPP模式下的产业投资基金运作【基金管理】

       详解PPP模式下的产业投资基金运作[基金管理]     点击标题下「搏实资本」可快速关注 搏实资本 研究型的投资机构,实操型的专家团队 ﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ 一.产业投资基金概述 ...

  10. Python 数据文件操作——写出数据