poj2226Muddy Fields

天哪终于A了泥泞地,刚开始模板return错了后来数组又类型开错了。。。

#include<cstdio> #include<vector> #include<iostream> using namespace std; int t; char ch[155][155]; int a[155][155],b[155][155];//不要顺手 int link[30005]; int vis[30005]; vector<int>e[30005]; int find(int x) { for(int i=0;i<e[x].size();i++) { int y=e[x][i]; if(vis[y]!=t) { vis[y]=t; if(link[y]==0||find(link[y])) { link[y]=x; return 1; } } } return 0;//here不要手误 } int main() { int r,c; int cnt=1; scanf("%d%d",&r,&c); for(int i=1;i<=r;i++) { for(int j=1;j<=c;j++) { cin>>ch[i][j]; } } for(int i=1;i<=r;i++) { for(int j=1;j<=c;j++) { if(ch[i][j]=='.') { if(ch[i][j-1]=='*')cnt++; a[i][j]=0; } else if(ch[i][j]=='*') { a[i][j]=cnt; } } if(ch[i][c]=='*')cnt++; } int maxn=cnt; cnt=1; for(int i=1;i<=c;i++) { for(int j=1;j<=r;j++) { if(ch[j][i]=='.') { if(ch[j-1][i]=='*')cnt++; b[j][i]=0; } else if(ch[j][i]=='*') { b[j][i]=cnt; } } if(ch[r][i]=='*')cnt++; } for(int i=1;i<=r;i++) { for(int j=1;j<=c;j++) { if(a[i][j]==0)continue; e[a[i][j]].push_back(b[i][j]); } } int ans=0; for(int i=1;i<=maxn;i++) { t++; if(find(i)) { ans++; } } printf("%d\n",ans); return 0; }
全部评论

相关推荐

不愿透露姓名的神秘牛友
12-18 11:21
优秀的大熊猫在okr...:叫你朋友入职保安,你再去送外卖,一个从商,一个从政,你们两联手无敌了,睁开你的眼睛看看,现在是谁说了算(校长在背后瑟瑟发抖)
选实习,你更看重哪方面?
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务