zoukankan      html  css  js  c++  java
  • POJ 3041 匈牙利算法模板题

    一开始预习是百度的算法 然后学习了一下

    然后找到了学长的ppt 又学习了一下..

    发现..居然不一样...

    找了模板题试了试..百度的不好用 反正就是wa了..果然还是应当跟着学长混..

    图两边的点分别是行数和列数

    每有一个点 就让所处行列连一条边

    求最小点覆盖

    然后卡住...后来看了增林的博客...

    最小点覆盖=最大匹配数 果然是模板题..

    然后wa..

    后来发现是当进行对左边点的遍历的时候 每次都要mem一次vis数组

    应该是每次找之前都重新清空啊。。不然下次怎么找啊。。。增光路对点的是否被访问过不是有要求吗 —— 学长原话...

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<map>
    #include<math.h>
    using namespace std;
    int s[505][505];
    int vis[505];
    int n,m;
    int link[505];
    bool find(int i)
    {
        for(int k=1;k<=n;k++)
        {
            if(s[i][k]==1&&vis[k]==0)
            {
                vis[k]=-1;
                if(link[k]==-1||find(link[k]))
                {
                    link[k]=i;
                    return true;
                }
            }
        }
        return false;
    
    }
    int main(){
    while(~scanf("%d%d",&n,&m))
    {
        memset(s,0,sizeof(s));
        memset(link,-1,sizeof(link));
        for(int i=1;i<=m;i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            s[a][b]=1;
        }
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            memset(vis,0,sizeof(vis));
            if(find(i))
            {
                ans++;
            }
        }
        printf("%d
    ",ans);
    }
    }
    

      

  • 相关阅读:
    Renderscript 浅析 (三)
    renderscript 浅析(二)
    renderscript 浅析(一)
    小米MACE开源框架搭建
    Word2vec
    最优化算法(牛顿、拟牛顿、梯度下降)
    聚类算法一(Kmeans、层次类聚、谱类聚)
    分类算法三(贝叶斯)
    js 创建方法
    XML与JSON的区别
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/5237007.html
Copyright © 2011-2022 走看看