二分图匹配csu1887Cuckoo Hashing

来源:互联网 发布:4g网络哪家好 编辑:程序博客网 时间:2024/05/29 14:13

题意:有n个字符串,每个字符串分别对应hash1和hash2两个hash值,判断会不会出现冲突。

做完后网上找题解,才发现这是一道二分匹配的题,表示完全不会二分图,暂时先放在这,等我把状态压缩好好搞了再说吧。

#include<iostream>#include<cstring>using namespace std;#define M 10002int arr[M][2];bool used[M];int link[M];//link[i] represents the point on the i-th positionint ans,t,n,m;bool dfs(int a){for(int i=0; i<2; i++){int j = arr[a][i];if(!used[j]){used[j] = true;if(link[j]==-1||dfs(link[j])){link[j] = a;return true;}}}return false;}int main(){int i;cin>>t;while(t--){memset(link,-1,sizeof(link));scanf("%d%d",&m,&n);for(i=0; i<m; i++)scanf("%d%d",&arr[i][0],&arr[i][1]);ans = 0;for(i=0; i<m; i++){memset(used,false,sizeof(used));if(!dfs(i))break;}if(i==m)cout<<"successful hashing"<<endl;else cout<<"rehash necessary"<<endl;}return 0;}


0 0