HDU 2819 Swap 二分图最大匹配
来源:互联网 发布:java执行sql语句的返回 编辑:程序博客网 时间:2024/05/17 01:17
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;const int maxm=110;int map[maxm][maxm],vis[maxm],flag[maxm],r[maxm],n,a[maxm],b[maxm];int find(int k);int main(){int i,j,k,sum;while(scanf("%d",&n)!=EOF){memset(map,0,sizeof(map));memset(flag,0,sizeof(flag));memset(r,0,sizeof(r));for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%d",&k);if(k==1)map[i][j]=1;}}sum=0;for(i=1;i<=n;i++){memset(vis,0,sizeof(vis));if(find(i))sum+=1;}//printf("dh\n");if(sum<n){printf("-1\n");continue;}int ans=0,temp;for(i=1;i<=n;i++){//printf("%d\n",flag[i]);for(j=1;j<=n;j++){if(flag[j]==i)break;}//printf("fj\n");if(i!=j){ans++;a[ans]=i;b[ans]=j;temp=flag[i];flag[i]=flag[j];flag[j]=temp;}}printf("%d\n",ans);for(i=1;i<=ans;i++)printf("C %d %d\n",a[i],b[i]);}return 0;}int find(int k){int i,j;for(j=1;j<=n;j++){if(!vis[j] && map[k][j]){vis[j]=1;if(!flag[j] || find(flag[j])){flag[j]=k;return 1;}}}return 0;}/*30 1 01 0 00 0 1*/
0 0
- HDU 2819 Swap 二分图最大匹配
- HDU-2819 swap(二分图最大匹配)
- HDU 2819 Swap(最大二分图匹配)
- hdu 2819 Swap 二分图的最大匹配
- HDU 2819 Swap(二分图最大匹配)
- hdu 2819 Swap(二分图最大匹配,输出路径)
- HDU 2819 Swap (最大二分匹配+输出路径)
- 小白算法练习 hdu 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 二分匹配
- NLog简易入门
- [Go语言]我的第十一个Go语言程序
- WIN-32 API
- 线程信号量
- 一种springmvc 里面引用外部js文件或者图片不成功的原因
- HDU 2819 Swap 二分图最大匹配
- 转载: 经典SQL语句大全
- XML联合XSL输出html report
- 如何查看Maven项目中的jar包依赖树情况?
- WEB-INF下的jsp文件如何访问css和js文件
- 队列实验refresh的停车场
- 多线程编程入门(14):Condition实现线程通信
- ubuntu16.04初次配置
- 死锁