标签:ini lin form code main sed match ora any
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3671 Accepted Submission(s): 1554
Special Judge
1 #include <cstring> 2 #include <cstdio> 3 4 using namespace std; 5 6 const int N(110); 7 int fx[4]={1,0,-1,0}; 8 int fy[4]={0,1,0,-1}; 9 bool lose[N][N]; 10 int n,m,ans,sumvis; 11 int vis[N][N],match[N][N][2]; 12 13 bool find(int x,int y) 14 { 15 for(int xx,yy,i=0;i<4;i++) 16 { 17 xx=fx[i]+x;yy=fy[i]+y; 18 if(!lose[xx][yy]&&vis[xx][yy]!=sumvis) 19 { 20 vis[xx][yy]=sumvis; 21 if(!match[xx][yy][0]||find(match[xx][yy][0],match[xx][yy][1])) 22 { 23 match[xx][yy][0]=x; 24 match[xx][yy][1]=y; 25 return true; 26 } 27 } 28 } 29 return false; 30 } 31 32 inline void init() 33 { 34 ans=0; 35 memset(vis,0,sizeof(vis)); 36 memset(lose,0,sizeof(lose)); 37 memset(match,0,sizeof(match)); 38 } 39 40 int AC() 41 { 42 for(int t,x,y;scanf("%d%d",&n,&m)&&n&&m;init()) 43 { 44 for(scanf("%d",&t);t--;) 45 scanf("%d%d",&x,&y),lose[x][y]=1; 46 for(int i=0;i<=n;i++) lose[i][0]=lose[i][m+1]=1; 47 for(int i=0;i<=m;i++) lose[0][i]=lose[n+1][i]=1; 48 for(int i=1;i<=n;i++) 49 for(int j=1;j<=m;j++) 50 if((i+j)&1&&!lose[i][j]) 51 { 52 if(find(i,j)) ans++; 53 sumvis++; 54 } 55 printf("%d\n",ans); 56 for(int i=1;i<=n;i++) 57 for(int j=1;j<=m;j++) 58 if(match[i][j][0]) 59 printf("(%d,%d)--(%d,%d)\n",i,j,match[i][j][0],match[i][j][1]); 60 printf("\n"); 61 } 62 return 0; 63 } 64 65 int I_want_AC=AC(); 66 int main(){;}
HDU——T 1507 Uncle Tom's Inherited Land*
标签:ini lin form code main sed match ora any
原文地址:http://www.cnblogs.com/Shy-key/p/7429430.html