hdu-2819 Swap (二分匹配)
来源:互联网 发布:网盘软件 编辑:程序博客网 时间:2024/05/22 14:17
题目链锁:http://acm.hdu.edu.cn/showproblem.php?pid=2819
#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<stdio.h>#include<algorithm>#include<cmath>#include<set>#include<map>#include<queue>#include<vector>using namespace std;#define inf 0x3f3f3f3f#define eps 1e-9#define mod 1000000007#define FOR(i,s,t) for(int i = s; i < t; ++i )#define REP(i,s,t) for( int i = s; i <= t; ++i )#define LL long long#define ULL unsigned long long#define pii pair<int,int>#define MP make_pair#define lson id << 1 , l , m#define rson id << 1 | 1 , m + 1 , r #define maxn ( 100+10 )#define maxe ( 50000+10 )vector< int > G[maxn];int link[maxn];bool vis[maxn];int n;bool dfs ( int u ) { for( int i = 0; i < G[u].size(); ++i ) { int v = G[u][i]; if( !vis[v] ) { vis[v] = 1; if( link[v] == -1 || dfs ( link[v] ) ) { link[v] = u; return 1; } } } return 0;}int hungary () { memset( link, -1, sizeof( link ) ); int res = 0; for( int i = 1; i <= n; ++i ) { memset( vis, 0, sizeof( vis ) ); if( dfs ( i ) ) ++res; } return res;}int ll[maxn], rr[maxn];int main () { while( ~scanf("%d", &n ) ){ int x; for( int i = 1; i <= n; ++i ) G[i].clear(); for( int i = 1; i <= n; ++i ) for( int j = 1; j <= n; ++j ) { scanf("%d", &x ); if( x ) G[i].push_back( j ); } int ans = hungary( ); if( ans < n ) { puts("-1"); continue; } ans = 0; for( int i = 1; i <= n; ++i ) { int v ; for( v = 1; v <= n; ++v ) if( link[v] == i ) break; if( v == i ) continue; ll[ans] = i, rr[ans++] = v; swap( link[v], link[i] ); // 注意交换列之后link也要更新 } printf("%d\n", ans ); for( int i = 0; i < ans; ++i ) printf("C %d %d\n", ll[i], rr[i] ); }}
0 0
- hdu-2819 Swap (二分匹配)
- hdu 2819 Swap(二分图匹配)
- HDU 2819 Swap 二分匹配
- HDU 2819 Swap (最大二分匹配+输出路径)
- HDU 2819 Swap (二分图-行列匹配+输出解)
- HDU 2819 Swap(二分图最大匹配)
- hdu 2819 Swap(二分图最大匹配,输出路径)
- HDU 2819 Swap 二分匹配 (思路题)
- hdu 2819 Swap 二分图匹配
- hdu-2819 Swap 二分图匹配
- HDU 2819 Swap(二分图匹配)
- Swap - HDU 2819 二分图匹配
- hdu 2819 Swap(二分图匹配)
- hdu 2819 Swap (二分图匹配)
- HDU 2819 — Swap 二分匹配
- 【图论】【二分图匹配】[HDU 2819]Swap
- hdu 2819 Swap【完美二分匹配】
- HDU 2819 Swap 二分图最大匹配
- C++语言
- JAVA学习背景
- Java Web开发Session超时设置
- 快速幂(整数+矩阵):hdu 2817+poj3233+poj1995+poj3070
- nginx编译c++模块和链接第三方库
- hdu-2819 Swap (二分匹配)
- 慎防ARP欺骗与网络嗅探(下篇)
- iOS之loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的使用
- 自旋锁和互斥锁区别
- Hadoop-2.3.0-cdh5.0.0获取源码及编译
- 对fft循环移位的重新理解
- Java集合详细介绍及原理
- 关于安卓应用(APK文件)的二次打包
- android 动态加载位图