zoukankan      html  css  js  c++  java
  • hdu 1151 Air Raid (二分匹配)

    点击打开链接

    路径覆盖就是在图中找一些路经,使之覆盖了图中的所有顶点

    //最小路径覆盖数=顶点数-最大匹配数

    required to visit all the intersections in the town.说明是求最小路径覆盖

    #include"stdio.h"
    #include"string.h"
    #define N 121
    int map[N][N],v[N],link[N],n,m,k;
    int dfs(int k)
    {
    	int i;
    	for(i=1;i<=n;i++)
    	{
    		if(map[k][i]&&!v[i])
    		{
    			v[i]=1;
    			if(link[i]==0||dfs(link[i]))
    			{
    				link[i]=k;
    				return 1;
    			}
    		}
    	}
    	return 0;
    }
    int main()
    {
    	int i,j,count,a,b,t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		scanf("%d%d",&n,&m);
    		memset(map,0,sizeof(map));
    		for(i=0;i<m;i++)
    		{
    			scanf("%d%d",&a,&b);
    			map[a][b]=1;
    		}
    		count=0;
    		memset(link,0,sizeof(link));
    		for(i=1;i<=n;i++)
    		{
    			memset(v,0,sizeof(v));
    			if(dfs(i))
    				count++;
    		}
    		printf("%d\n",n-count);
    	}
    	return 0;
    }
    
    


  • 相关阅读:
    R 语言
    Maven
    IntelliJ IDEA
    Windows Terminal
    pip
    批处理编程案例
    Windows DOS命令批处理脚本
    Day15 T1 库特的向量
    Day12 T1 少女觉
    Day10 T2 邦德
  • 原文地址:https://www.cnblogs.com/yyf573462811/p/6365274.html
Copyright © 2011-2022 走看看