标签:二分匹配
2 5 1 1 2 3 4 5 6 2 1 2 3 4 5 5
Jerry Tom
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <limits.h>
#include <ctype.h>
#include <string.h>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
#include <deque>
#include <vector>
#include <set>
//#include <map>
#include <memory.h>
using namespace std;
int map[110],pp[110][110],n,vis[110];
int BFS(int x){
int i;
for(i=1;i<=n;i++){
if(!vis[i] && pp[x][i]){
vis[i] = 1;
if(!map[i] || BFS(map[i])){
map[i] = x;
return 1;
}
}
}
return 0;
}
int main(){
int t,i,a[110],k;
while(~scanf("%d",&t)){
while(t--){
scanf("%d%d",&n,&k);
memset(pp,0,sizeof(pp));
memset(map,0,sizeof(map));
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
int tt = a[i];
while(tt<=n && a[i]<=n){
pp[a[i]][tt] = 1;
tt+=k;
}
}
int count = 0;
for(i=0;i<n;i++){
memset(vis,0,sizeof(vis));
if(BFS(a[i]) == 1){
count++;
}
}
if(count == n){
printf("Jerry\n");
}
else{
printf("Tom\n");
}
}
}
return 0;
}
标签:二分匹配
原文地址:http://blog.csdn.net/zcr_7/article/details/40748831