#include <bits/stdc++.h>
using namespace std;
int n,s;
const int MAXN = 1000;
int uN,vN;//u,v的数目,使用前面必须赋值
int g[MAXN][MAXN];//邻接矩阵
int linker[MAXN];
bool used[MAXN];
bool dfs(int u){
for(int v = 0; v < vN; v++)
if(g[u][v] && !used[v]){
used[v] = true;
if(linker[v] == -1 || dfs(linker[v]))
{
linker[v] = u;
return true;
}
}
return false;
}
int hungary(){
int res = 0;
memset(linker,-1,sizeof(linker));
for(int u = 0; u < uN; u++){
memset(used,false,sizeof(used));
if(dfs(u))res++;
}
return res;
}
int main(){
int t,ca=1;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&s);
if(s<n)swap(n,s);
if(n>500){
printf("Case #%d: No\n",ca++);
}
else{
memset(g,0,sizeof(g));
for(int i=s+1;i<=s+n;i++){
for(int j=1;j<=n;j++){
if(i%j==0){
g[j-1][i-s-1]=1;
}
}
}
uN=n,vN=n;
if(hungary()==n){
printf("Case #%d: Yes\n",ca++);
}
else{
printf("Case #%d: No\n",ca++);
}
}
}
}
tjut 5943
最新推荐文章于 2016-11-04 22:02:44 发布