• [poj] 3041 Asteroids || 最小点覆盖=最大二分图匹配


    原题

    本题为最小点覆盖,而最小点覆盖=最大二分图匹配
    //最小点覆盖:用最少的点(左右两边集合的点)让每条边都至少和其中一个点关联。

    #include<cstdio>
    #include<cstring>
    #define N 510
    using namespace std;
    int edge[N][N],n,m,lover[N],ans;
    bool vis[N];
    
    bool find(int x)
    {
        for (int i=1;i<=n;i++)
    	if (edge[x][i] && !vis[i])
    	{
    	    vis[i]=1;
    	    if (!lover[i] || find(lover[i]))v
    	    {
    		lover[i]=x;
    		return 1;
    	    }
    	}
        return 0;
    }
    
    int main()
    {
        scanf("%d%d",&n,&m);
        for (int i=1,a,b;i<=m;i++)
        {
    	scanf("%d%d",&a,&b);
    	edge[a][b]=1;
        }
        for (int i=1;i<=n;i++)
        {
    	memset(vis,0,sizeof(vis));
    	if (find(i)) ans++;
        }
        printf("%d
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    小w的喜糖(candy)
    亚瑟王(arthur)
    Bajtman i Okrągły Robin
    Bajtman i Okrągły Robin
    网络流模板
    网络流模板
    觉醒力量 (hidpower)
    觉醒力量 (hidpower)
    E-card
    E-card
  • 原文地址:https://www.cnblogs.com/mrha/p/7942885.html
Copyright © 2020-2023  润新知