zoukankan      html  css  js  c++  java
  • Asteroids

    点击打开链接

    题意:某人想实现太空旅行,能够通过空洞实现。而它们的连通方式就是一张n * n的矩阵;如今有一种武器,能够一次性消灭它的一行或者一列(意思就是相当于留下一条可行路)。

    解析:利用匈牙利算法实现。二分图匹配

    #include<iostream>
    #include<cstring>
    #include<cstdio>>
    
    using namespace std;
    
    const int maxn = 1005;
    int mapp[ maxn ][ maxn ], vis[ maxn ], cx[ maxn ], cy[ maxn ];
    int n, m, nx, ny;
    	
    int Path( int u ){
    	ny = n;
    	for( int v = 1; v <= ny; ++v ){
    		if(  mapp[ u ][ v ]  && !vis[ v ] ){
    			vis[ v ] = 1;
    			if( cy[ v ] == -1 || Path( cy[ v ] ) ){
    				cx[ u ] = v;
    				cy[ v ] = u;
    				return 1;
    			}
    		}		
    	}
    	return 0;
    }
    
    int main(){
    	while( scanf( "%d%d", &n, &m ) != EOF ){
    		int x, y;
    		memset( mapp, 0, sizeof( mapp ) ); 
    		memset( cx, -1, sizeof( cx ) );
    		memset( cy, -1, sizeof( cy ) ); 
    		for( int i = 0; i < m; ++i ){
    			scanf( "%d%d", &x, &y );
    			mapp[ x ][ y ] = 1;
    		}
    		nx = n;
    		int ans = 0;
    		for( int i = 1; i <= nx; ++i ){
    			memset( vis, 0, sizeof( vis ) );
    			if( cx[ i ] == -1 ){
    				ans += Path( i );
    			}
    		}
    		printf( "%d
    ", ans );
    	}	
    	return 0;
    }


  • 相关阅读:
    Vue入门
    吃透SprinngBoot
    SSM整合详解
    Linux查找端口并关闭
    接入腾讯云的OCR识别身份证信息
    IDEA 快捷键《宋红康版》
    Mysql详解
    docker常见命令
    SpringBoot集成Redis
    使用mybatis出现异常
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7236698.html
Copyright © 2011-2022 走看看