设为首页 加入收藏

TOP

Antenna Placement poj3020(一)
2012-12-06 13:48:32 来源: 作者: 【 】 浏览:711
Tags:Antenna  Placement  poj3020

    这是一道比较经典的二分匹配,将格子按黑白标记后,再将含‘*’的格子按黑白分成两组,建边.最后的结果就是总的‘*’的个数-匹配数.

    [cpp]

    #include<iostream>

    #include<cstdio>

    #include<vector>

    using namespace std;

    vector<int>map[400];//按奇偶性建二分图

    int t,n,m;

    int match[400],fy[400],ln,rn;

    int map1[41][11];//原始图

    int dirt ={0,1,0,-1,1,0,-1,0};

    int path(int u)

    {

    for(int i=0,j;i<map[u].size();i++)

    {

    j=map[u][i];

    if(!fy[j])

    {

    fy[j]=1;

    if(match[j]==-1||path(match[j]))

    {

    match[j]=u;

    return 1;

    }

    }

    }

    return 0;

    }

    int main()

    {

    int i,j,x,y,ans;

    char tmp;

    scanf(“%d”,&t);

    while(t--)

    {

    scanf(“%d%d”,&n,&m);

    ln=rn=0;

    for(i=1;i<=n;i++)

    {

    getchar();

    for(j=1;j<=m;j++)

    {

    scanf(“%c”,&tmp);

    if(tmp=='*')

   

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇大数乘法的应用 下一篇POJ线段树求矩形面积

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: