题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1526

思路:floyd求传递闭包,然后就是最大匹配了,不过一开始输入没看清,被坑了将近2个小时。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
#define MAXN 111
vector<int>vet[MAXN];
bool mark[MAXN];
int ly[MAXN],lx[MAXN];
int Index[MAXN];
int map[MAXN*][MAXN*];
char str[MAXN*][];
int n,m,K,vn,vm; int GetID(char ss[])
{
for(int i=; i<n; i++) {
if(strcmp(str[i],ss)==)return i;
}
strcpy(str[n++],ss);
return n-;
} void floyd()
{
for(int k=; k<n; k++)
for(int i=; i<n; i++)
for(int j=; j<n; j++)
if(i==j)map[i][j]=true;
else map[i][j]=(map[i][j]||(map[i][k]&&map[k][j]));
} int dfs(int u)
{
for(int i=; i<vet[u].size(); i++) {
int v=vet[u][i];
if(!mark[v]) {
mark[v]=true;
if(ly[v]==-||dfs(ly[v])) {
ly[v]=u;
lx[u]=v;
return ;
}
}
}
return ;
} int MaxMatch()
{
int res=;
memset(lx,-,sizeof(lx));
memset(ly,-,sizeof(ly));
for(int i=; i<vm; i++) {
if(lx[i]==-) {
memset(mark,false,sizeof(mark));
res+=dfs(i);
}
}
return res;
} int main()
{
// freopen("1.txt","r",stdin);
int _case,t=;
char s1[],s2[];
scanf("%d",&_case);
while(_case--) {
if(t++)puts("");
scanf("%d",&n);
for(int i=; i<n; i++) {
scanf("%s",str[i]);
}
scanf("%d",&m);
vn=n,vm=m;
memset(map,false,sizeof(map));
for(int i=; i<m; i++)vet[i].clear();
for(int i=; i<m; i++) {
scanf("%s%s",s1,s2);
Index[i]=GetID(s2);
}
scanf("%d",&K);
for(int i=; i<K; i++) {
scanf("%s%s",s1,s2);
map[GetID(s1)][GetID(s2)]=true;
}
floyd();
for(int i=; i<vm; i++) {
for(int j=; j<vn; j++) {
if(map[Index[i]][j])vet[i].push_back(j);
}
}
int ans=MaxMatch();
printf("%d\n",m-ans);
}
return ;
}

最新文章

  1. 一个简单的网站web项目的详解
  2. [LeetCode] Strobogrammatic Number 对称数
  3. excle表格生成网页
  4. 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
  5. 在IE7下使用angularjs(转)
  6. 云服务器上安装配置Filezilla Server的坑!
  7. html代码转义到js时,往往会遇到问题,这代码实现html和js互转
  8. Objective-C中的分类与协议
  9. Traceview 性能分析工具
  10. ios 以NSObject为父类的各类间继承关系
  11. 解决magento保存产品时耗时很长的问题
  12. 移动端 -webkit-user-select:text; ios10 bug 解决方案
  13. jenkins 安装网址
  14. 我使用过的Linux命令之date - 显示、修改系统日期时间(转)
  15. 【RFT】【环境配置】Mac
  16. PHP 对象转数组 Object转array
  17. ​0​天​掌​握​i​O​S​开​发​之​D​a​y​2​ ​-​ ​内​存​管​理 (给学生讲解的课件,总结的不错)
  18. GCC编译命令常用选项
  19. 共享内存创建shmget控制操作shmat,shmctl
  20. python破解网吧收费系统,远控网吧电脑设备!

热门文章

  1. iTiTa再次回归,这一年我们都在干什么?
  2. Resizing the View(待续。。。。)
  3. C++11 常用语法
  4. [转]Gridview中实现RadioButton单选效果
  5. 使用JSON的数据格式
  6. 20.时钟抖动(jitter)和时钟偏移(skew)的概念?
  7. JAVA类与对象(九)------多态
  8. JavaScript显示输出
  9. Careercup - Google面试题 - 6332750214725632
  10. GCC笔记