1 条题解
-
0
C++ :
#include<stdio.h> #include<string.h> int n,m,map[201][201],flag[201],p[201]; char a[201][201]; int dfs(int x) { int i; for(i=0;i<n+m;i++) if(map[x][i]&&flag[i]==0) { flag[i]=1; if(p[i]==-1||dfs(p[i])) { p[i]=x; return 1; } } return 0; } int main() { int i,j,s,x,y,T; scanf("%d",&T); while(T--) { scanf("%d%d%*c",&n,&m); memset(map,0,sizeof(map)); memset(p,-1,sizeof(p)); for(i=0;i<n;i++) { scanf("%s",a[i]); for(j=0;j<m;j++) if(a[i][j]=='1') map[i][n+j]=map[n+j][i]=1; } for(i=0,s=0;i<n+m;i++) { memset(flag,0,sizeof(flag)); if(dfs(i)) s++; } printf("%d\n",s/2); } return 0; }
- 1
信息
- ID
- 1184
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者