POJ 1087 A Plug for UNIX
链接:http://poj.org/problem?id=1087
题意:有n(1≤n≤100)个插座,每个插座用一个数字字母式字符串描述(至多有24 个字符)。有m(1≤m≤100)个设备,每个设备有名称,以及它使用的插头的名称;插头的名称跟它所使用的插座的名称是一样的;设备名称是一个至多包含24 个字母数字式字符的字符串;任何两个设备的名称都不同;有k(1≤k≤100)个转换器,每个转换器能将插座转换成插头。
样例:
4
A
B
C
D
5
laptop B
phone C
pager B
clock B
comb X
3
B X
X A
X D
思路:建立一个汇点,每个插座和汇点连边,流量代表该种插座的个数。建立一个源点,源点和每个设备连边,流量为1。每个转换器将两个插座连边,流量为INF。然后求最大流。答案就是设备的个数减去最大流。
细节:这道题在建图的时候比较恶心。需要注意的是,在m个设备和插座以及k个转换器的数据中,可能有之前没有出现过的设备。所以必须将插座的信息存起来,可以用map来存插座对应的点。
代码:
/*
ID: wuqi9395@126.com
PROG:
LANG: C++
*/
#include