博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asteroids
阅读量:7116 次
发布时间:2019-06-28

本文共 943 字,大约阅读时间需要 3 分钟。

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

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

#include
#include
#include
>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\n", ans ); } return 0;}

转载地址:http://nkwel.baihongyu.com/

你可能感兴趣的文章
linux命令 ip
查看>>
Ubuntu使用apt-get upgrade升级时出错
查看>>
【python】-- RabbitMQ 队列消息持久化、消息公平分发
查看>>
Trace Application Engine Processes Using Process Definitions
查看>>
JAVA入门到精通-第46讲-IO编程.记事本开发
查看>>
算法6-排序-快速排序
查看>>
centos 7 安装gcc g++
查看>>
Hadoop平台提供离线数据和Storm平台提供实时数据流
查看>>
[终极精简版][图解]Nginx搭建flv mp4流媒体服务器
查看>>
【转载】MVC中ASCX分部视图的Action在哪里设置
查看>>
【转载】Discuz!NT企业版之Sphinx全文搜索
查看>>
iOS 卡片拖拽+翻转效果 。 仿tableview从缓存池中获取cell机制
查看>>
.net中Word转Html的方法(可以不装微软Word组件)
查看>>
jquery
查看>>
Eclipse实现类似.Net中的Region功能
查看>>
Web.Config全攻略
查看>>
Innodb中的事务隔离级别和锁的关系
查看>>
SQL获取所有数据库名、表名、储存过程以及参数列表
查看>>
react生命周期,中间件、性能优化、数据传递、mixin的使用
查看>>
【转】Charles手机抓包设置&无法打开火狐网页设置
查看>>