标签:
Special Judge
#include<cstdio> #include<cstring> #include<vector> #include<algorithm> #define pb push_back using namespace std; const int d[4][2]={1,0,0,1,-1,0,0,-1}; int n,m,k,link[100005],vis[100005]; bool mp[105][105]; bool dfs(int cur) { for(int i=0;i<4;i++) { int x=cur/m+d[i][0],y=cur%m+d[i][1]; if(x<0||y<0||x>=n||y>=m)continue; int v=x*m+y; if(!vis[v]&&!mp[x][y]) { vis[v]=1; if(link[v]==-1||dfs(link[v])) { link[v]=cur; return 1; } } } return 0; } int match() { int ans=0; memset(link,-1,sizeof(link)); for(int i=0;i<n*m;i++) { int x=i/m,y=i%m; if((x+y)&1&&!mp[x][y]) { memset(vis,0,sizeof(vis)); if(dfs(i))ans++; } } return ans; } int main() { while(scanf("%d%d",&n,&m),n|m) { scanf("%d",&k); memset(mp,0,sizeof(mp)); while(k--) { int x,y; scanf("%d%d",&x,&y); mp[--x][--y]=1; } printf("%d\n",match()); for(int i=0;i<n*m;i++) if(link[i]!=-1) printf("(%d,%d)--(%d,%d)\n",link[i]/m+1,link[i]%m+1,i/m+1,i%m+1); } return 0; }
HDU 1507 Uncle Tom's Inherited Land*
标签:
原文地址:http://www.cnblogs.com/homura/p/5875451.html