poj2226Muddy Fields

Posted shineeternal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

以上是关于poj2226Muddy Fields的主要内容,如果未能解决你的问题,请参考以下文章

poj2226Muddy Fields——二分图匹配

POJ - 2226 Muddy Fields

POJ 2226 Muddy Fields(二分匹配 巧妙的建图)

POJ-2226 Muddy Fields---二分图匹配+巧妙构图

POJ2226 Muddy Fields(二分图最小点覆盖集)

POJ 2226 Muddy Fields 二分图(难点在于建图)