首页 > 其他分享 >Social Network 题解

Social Network 题解

时间:2023-02-14 17:33:49浏览次数:43  
标签:fx cnt return Network int 题解 fa Social find

题意:

题目翻译是有问题的,题目的真正意思其实是 \(∀i∈[1,d]\),求在满足 \([1,i]\) 的规定的前提下恰好连 \(i\) 条边的无向图中度数最大联通块的大小减 \(1\)。

思路

考虑贪心策略。如果此时读入的 \(x_i,y_i\) 已经是连通的了,那么如果我们用这条边连接 \(x_i,y_i\) 纯属浪费,倒不如用这条边将最大的那两个连通块连接起来。

所以做法如下:

我们用 \(cnt\) 记录目前有多少条这样的边,由于 \(cnt\) 条边连接 \(cnt + 1\) 个连通块,所以我们只需要将最大的 \(cnt + 1\) 个联通块中点的数量累加再减 \(1\) 就是答案了。

至于怎么判连通性,用并查集就能愉快的解决了呀!

代码实现

#include<bits/stdc++.h>
using namespace std;
int n, m, fa[1001], size[1001], cnt;
int find(int x)
{
	if (fa[x] == x) return x;
	return fa[x] = find(fa[x]);
}
void merge(int x, int y)
{
	int fx = find(x), fy = find(y);
	if(fx == fy)
	{
		cnt ++;
		return ;
	}
	fa[fx] = fy;
	size[fy] += size[fx];
	return ;
}
int main()
{
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i ++) fa[i] = i, size[i] = 1;
	for (int i = 1; i <= m; i ++)
	{
		int x, y;
		scanf("%d%d", &x, &y);
		merge(x, y);
		int ans = 0;
		vector<int> g;
		for (int i = 1; i <= n; i ++) if (find(i) == i) g.push_back(size[i]);
		sort(g.begin(), g.end(), greater<int>());
		for (int i = 0; i <= cnt; i ++) ans += g[i];
		printf("%d\n", ans - 1);
	}
}

标签:fx,cnt,return,Network,int,题解,fa,Social,find
From: https://www.cnblogs.com/tongyuxin/p/17120308.html

相关文章

  • P8827 [传智杯 #3 初赛] 森林 题解
    题意有一颗树,每个点有一个点权\(v\)。现在要对这棵树进行\(m\)次以下三种操作之一:删除一条边。修改一个点的点权。查询一个点\(u\)所在的树的点权之和。......
  • lg8365题解
    容易发现我们一定会先加后乘,使用调整法可以证明这个结论。并且可以发现除了\(a_i\)值为\(1\)的数外(假设他们的\(a\)值和为\(s\)),其他的数最多只会选\(1\)个做加法操作(设如......
  • Vue项目在ie浏览器中显示空白的兼容性问题解决
    问题:在ie浏览器中页面报错:SCRIPT5022:SecurityError小编也不知道原因是什么,小编是尝试了以下几种方式才显示出来,这里建议大家试试看。1、下载软件包:@babel/polyfill执......
  • 网络策略(NetworkPolicy)
    网络策略(NetworkPolicy)是一种关于Pod间及与其他网络端点间所允许的通信规则的规范。NetworkPolicy资源使用标签选择Pod,并定义选定Pod所允许的通信规则。说明:所......
  • elementUI的table表格改变数据不更新问题解决
    问题原因:在Vue实例创建时,以及data赋值时editable并未声明,因此就没有被Vue转换为响应式的属性,自然就不会触发视图的更新。解决方案:1、给data赋值前把editable属......
  • C++奥赛一本通递推题解
    title:C++奥赛一本通刷题记录(递推)date:2017-11-08tags:一本通openjudegecategories:OIC++奥赛一本通刷题记录(递推)2017.11.8Bygwj1139177410斐波那契数列​​op......
  • C++奥赛一本通排序题解
    title:C++奥赛一本通刷题记录(排序)date:2017-11-16tags:一本通openjudegecategories:OIC++奥赛一本通刷题记录(排序)2017.11.16Bygwj1139177410都是拿STL水的…别......
  • C++奥赛一本通刷题高精度题解
    title:C++奥赛一本通刷题记录(高精度)date:2017-11-15tags:一本通openjudegecategories:OIC++奥赛一本通刷题记录(高精度)2017.11.15Bygwj1139177410大整数加法​......
  • CodeVs天梯黄金Gold题解
    title:CodeVs天梯之Golddate:2017-12-28tags:天梯CodesVscategories:OICodeVs天梯之Gold2018.01.04Bygwj2330x01贪心​​均分纸牌​​#include<iostream>usingname......
  • CodeVs天梯钻石Diamond题解
    title:CodeVs天梯之Diamonddate:2017-12-28tags:天梯CodesVscategories:OICodeVs刷题攻略之Diamond2018.1.14Bygwj11391774100x01最短路​​Car的旅行路线​​//1.......