Codeforces 1243 D 0-1 MST
隐隐感觉N年前做过一道类似的题。
很显然我们只需要考虑,仅有0边的子图有多少个连通块,然后这个数量减去1就是答案了(这个和kruscal过程等价)。
然后其实就是妥妥的暴力了。。。因为1边数量非常之少,于是我们就可以直接每次暴力合并两个连通块。
显然这里判断是否能合并的 总复杂度是 O(M)的,因为不同阶段连通块的判断不会用到同一条边,而只要两个连通块中有一条不是1的边就可合并;
合并的复杂度的话,启发式合并可以做到 O(N log N)。
于是就愉快的做完了,代码还超好写233
- #include<bits/stdc++.h>
- #define ll long long
- using namespace std;
- #define pb push_back
- const int N=100005;
- unordered_map<int,int> mmp[N];
- vector<int> g[N];
- int n,p[N],m,U,V,sz;
- int getfa(int x){ return p[x]==x?x:(p[x]=getfa(p[x]));}
- inline bool can(int x,int y){
- for(int i:g[x])
- for(int j:g[y]) if(!mmp[i][j]) return 1;
- return 0;
- }
- inline void Merge(int x,int y){
- if(g[x].size()>g[y].size()) swap(g[x],g[y]);
- for(int i:g[x]) g[y].pb(i);
- }
- inline void solve(){
- for(int i=1;i<=n;i++) g[i].pb(i),p[i]=i;
- for(int i=n;i;i--){
- bool flag=0;
- for(int j=i-1;j;j--) if(can(i,j)){
- Merge(i,j),flag=1;
- break;
- }
- sz-=flag,g[i].clear();
- }
- }
- int main(){
- for(scanf("%d%d",&n,&m),sz=n;m;m--) scanf("%d%d",&U,&V),mmp[U][V]=mmp[V][U]=1;
- solve(),printf("%d\n",sz-1);
- return 0;
- }
Codeforces 1243 D 0-1 MST的更多相关文章
- Codeforces 160 D. Edges in MST
\(>Codeforces \space 160 D. Edges in MST<\) 题目大意 : 给出一张带权无向图,求对于这张图上的每一条边,其是必然存在于每一种最小生成树中,还是至 ...
- CodeForces 1243"Character Swap (Hard Version)"(multimap)
传送门 •前置知识-multimap的用法 $multimap$ 与 $map$ 的区别在于一个 $key$ 可以对应几个值: 对于 $map$ 而言,一个 $key$ 只能对应一个值,并且按照 $k ...
- CodeForces 450B (矩阵快速幂模板题+负数取模)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51919 题目大意:斐波那契数列推导.给定前f1,f2,推出指定第N ...
- poj 1679 The Unique MST【次小生成树】
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24034 Accepted: 8535 D ...
- Codeforces Round #535 (Div. 3) 解题报告
CF1108A. Two distinct points 做法:模拟 如果两者左端点重合就第二条的左端点++就好,然后输出左端点 #include <bits/stdc++.h> usin ...
- HDU4081 Qin Shi Huang's National Road System 2017-05-10 23:16 41人阅读 评论(0) 收藏
Qin Shi Huang's National Road System ...
- 【spring boot】整合LCN,启动spring boot2.0.3 启动报错:Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
spring boot 2.0.3启动报错: Error starting ApplicationContext. To display the conditions report re-run yo ...
- Codeforces - 527C 平衡树维护几何
题意:给定一个矩形\(W*H\),一共\(n\)次切割操作(水平/垂直),求每次操作后得出的最大面积 随机按tag扫CF题目找到的题,可以分别用平衡树维护割边的位置和长度(\(x/y\)各两个) 具体 ...
- CF1242B. 0-1 MST
题目大意 有一个n个点的完全图,上面有m条边的权值为1,其余为0 求MST n,m<=10^5 题解 方法一: 维护一个点集,表示当前MST中的点 一开始任意加一个点 对于一个未加入的点,如果和 ...
随机推荐
- Qt中容器类应该如何存储对象(最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定义,建议采用 智能指针QSharedPointer)
Qt提供了丰富的容器类型,如:QList.QVector.QMap等等.详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int.QString等.如果我们 ...
- 回归损失函数:L1,L2,Huber,Log-Cosh,Quantile Loss
回归损失函数:L1,L2,Huber,Log-Cosh,Quantile Loss 2019-06-04 20:09:34 clover_my 阅读数 430更多 分类专栏: 阅读笔记 版权声明: ...
- Centos7.3 为php7 安装swoole 扩展
今天心血来潮想在服务器上安装一下swoole扩展 下面列一下教程: xshell进入你的服务器 然后目录自选吧 反正我放在根目录了 下面是扩展链接: wget https://github.co ...
- mysql中的锁机制之概念篇
锁的概念 ①.锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具. ②.在计算机中,是协调多个进程或线程并发访问某一资源的一种机制. ③.在数据库当中,除了传统的计算资源(CPU.RAM.I/O等 ...
- js判断是哪种浏览器和阻止页面加载
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 使用ef core自动生成mysql表和数据编码的问题
mysql默认的编码是不支持中文的,需要改成utf8编码格式. 而我使用的Pomelo.EntityFrameworkCore.MySql组件生成mysql库和表,他是使用默认编码的. 网上大多说修改 ...
- linux服务脚本
#!/bin/sh ARG=$1 case $ARG in start): nohup /path/program & ;; stop): pkill program ;; restart): ...
- Java基础加强-代理
/*代理*//*代理的概念与作用*/ 代理过程架构 客户端Client原来直接调用的是Target目标类 使用代理后,现在让客户端不要调用Target,调用代理类Proxy,代理类Proxy和目标类T ...
- Eclipse中如何创建一个完整的Maven-Web项目
Maven Web项目搭建 1.首先确保本地开发环境搭建完毕(jdk,maven). 2.打开Eclipse,新建Maven项目.选择Maven Project选项. 3.将第一项:Create a ...
- 取出List<Map<String,Object>>里面Map的key:value值
1.取出Map其中一个属性的值 Map map = new HashMap(); map.put("key1", "value1"); map.put(&quo ...