一、题目内容
POJ 3692 原题地址
二、题意解释
一群男孩女孩,同性之间都相互认识,但是异性之间只有某些人认识彼此。给出相互认识的异性的各自编号。
求组成一个小队,这个小队里的人都相互认识。问这个小队最多能有多少人。
三、代码及注释
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std
;
const int maxn
=205;
int g
[maxn
][maxn
];
int girl
[maxn
],used
[maxn
];
int n
,m
,e
;
bool Find(int x
)
{
for (int i
= 1; i
<= m
; i
++)
{
if (g
[x
][i
] && !used
[i
])
{
used
[i
] = 1;
if (girl
[i
] == 0 || Find(girl
[i
]))
{
girl
[i
] = x
;
return true;
}
}
}
return false;
}
int main()
{
int c
=0;
while(scanf("%d%d%d",&n
,&m
,&e
)!=EOF)
{
c
++;
if(n
==0&&m
==0&&e
==0) break;
memset(girl
, 0, sizeof(girl
));
memset(g
, 1, sizeof(g
));
while(e
--)
{
int c
,r
;
scanf("%d%d",&c
,&r
);
g
[c
][r
]=0;
}
int ans
=0;
for(int i
=1; i
<=n
; i
++)
{
memset(used
,0,sizeof(used
));
if(Find(i
))ans
++;
}
printf("Case %d: %d\n",c
,n
+m
-ans
);
}
return 0;
}
转载请注明原文地址:https://blackberry.8miu.com/read-7025.html