题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4883

把各行和各列看成n+m个点。

如果一下能防守行和列,就是最大匹配了。这是每两个左右部点需要一条边。

现在一行和一列都需要专门防守,其实可以看成每个点都需要一条边!

记录并查集内部已经有没有环,在连边的讨论一下即可。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=1e5+;
int n,m,xnt,fa[N];
ll ans;
bool fx[N];
struct Ed{
int x,y,w;
Ed(int x=,int y=,int w=):x(x),y(y),w(w) {}
bool operator< (const Ed &b) const
{return w<b.w;}
}ed[N];
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='') ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return fx?ret:-ret;
}
void add(int x,int y,int z)
{
ed[++xnt]=Ed(x,y,z);
}
int find(int a){return fa[a]==a?a:fa[a]=find(fa[a]);}
int main()
{
n=rdn(); m=rdn();
for(int i=;i<=n;i++)
for(int j=,w;j<=m;j++)
{
w=rdn();
add(i,j+n,w);
}
int d=n+m;
for(int i=;i<=d;i++) fa[i]=i;
sort(ed+,ed+xnt+);
for(int i=,u,v;i<=xnt;i++)
{
u=find(ed[i].x); v=find(ed[i].y);
if(u!=v&&(fx[u]&fx[v])==)
{
fa[u]=v; fx[v]|=fx[u]; ans+=ed[i].w;
}
else if(u==v&&!fx[u])
{
fx[u]=; ans+=ed[i].w;
}
}
printf("%lld\n",ans);
return ;
}

最新文章

  1. Alcatraz 的安装和删除
  2. format not a string literal and no format arguments
  3. javascript学习笔记(四):事件处理函数和动态创建html标记。
  4. 如何通过CSS3 实现响应式Web设计
  5. c++ typeid获取类型名-rtti
  6. 第一章 JacksonUtil 序列化与反序列化属性总结
  7. ServiceStack 介绍
  8. poj3553 拓扑序+排序贪心
  9. sqlmap动态sql优化,避免传参失误批量修改和删除操作!
  10. 鸟哥的Linux私房菜 第十八章、认识系统服务 (daemons)
  11. Javascript:由 “鸭子类型” 得出来的推论
  12. 第2章 系统用户/组管理(2) su和sudo
  13. javascript访问html元素的内容(2)
  14. js 解决两值交换
  15. SQL反模式学习笔记2 乱穿马路
  16. 二、Linear Regression 练习(转载)
  17. elasticsearch安装ansj分词器
  18. 一个简单的日志函数C++
  19. centos7下搭建JAVA项目运行环境。 JAVA+MYSQL+TOMCAT+NGINX
  20. 虚拟环境pipenv的使用

热门文章

  1. log4j入门及常用配置
  2. LeetCode108_Convert SortedArray to BinarySearchTree(将有序数组转成二叉排序树) Java题解
  3. 安装Redis图形监控工具---RedisLive
  4. programming review (c++): (3)graph, binary search
  5. React中key的必要性与使用
  6. H2 应用实例1
  7. eclipse转到IntelliJ IDEA 2017.1入坑指南
  8. ios何时使用self.
  9. python 基础 1.4 python运算符
  10. 基于EasyDarwin框架实现EasyNVR H5无插件直播流媒体服务器方案