[蓝桥杯 2020 省 AB1] 网络分析

一开始写的暴力合并 卡n^2过的不是正解

看正解是类似 虚拟点+树形DP的思路 很巧妙 记录一下

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
#define int long long
const int N = 3e5+10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
int gcd(int a,int b){return b?a:gcd(b,a%b);}
int lcm(int a,int b){return a*b/gcd(a,b);}
int qmi(int a,int b,int mod){int res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;}


int n,q,m;
int p[N];
int dp[N];
int find(int x){
	if(x!=p[x])p[x] = find(p[x]);
	return p[x];
}
int e[N],ne[N],w[N],h[N],idx;
void add(int a,int b,int c=0){
	e[idx] = b,ne[idx] = h[a],w[idx] = c,h[a] = idx++;
}


void dfs(int u,int fa){
	dp[u]+=dp[fa];
	for(int i=h[u];~i;i=ne[i]){
		int j = e[i];
		dfs(j,u);
	}
}


void solve()
{
	cin>>n>>m;
	int root = n+1;
	memset(h,-1,sizeof h);
	for(int i=1;i<=2*n+10;++i)p[i] = i;
	while(m--){
		int op,a,b;cin>>op>>a>>b;
		if(op==1){
			int pa = find(a),pb = find(b);
			if(pa==pb)continue;
			p[pa] = root;
			p[pb] = root;
			add(root,pa);
			add(root,pb);
			++root;
		}else{
			dp[find(a)]+=b;
		}
	}
	
	for(int i=n+1;i<root;++i)if(find(i)==i)dfs(i,0);
	for(int i=1;i<=n;i++)cout<<dp[i]<<" ";
	
	

}

signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _;
	//cin>>_;
	_ = 1;
	while(_--)solve();
	return 0;
}

相关推荐

  1. [ 2020 AB1] 走方格

    2024-03-26 05:42:12       38 阅读
  2. P8717 [ 2020 AB2] 成绩分析 Python

    2024-03-26 05:42:12       44 阅读
  3. P8706 [ 2020 AB1] 解码 Python

    2024-03-26 05:42:12       38 阅读
  4. [ 2021 AB2] 完全平方数

    2024-03-26 05:42:12       36 阅读
  5. [ 2021 AB2] 完全平方数

    2024-03-26 05:42:12       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 05:42:12       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 05:42:12       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 05:42:12       82 阅读
  4. Python语言-面向对象

    2024-03-26 05:42:12       91 阅读

热门阅读

  1. 微信小程序布局中的单位及使用

    2024-03-26 05:42:12       42 阅读
  2. AI对比:ChatGPT与文心一言的异同与未来

    2024-03-26 05:42:12       42 阅读
  3. 关于RPC

    关于RPC

    2024-03-26 05:42:12      40 阅读
  4. pytorch利用保存的模型进行预测

    2024-03-26 05:42:12       40 阅读
  5. 【暴刷力扣】1. 两数之和

    2024-03-26 05:42:12       40 阅读
  6. LibFuzzer初认识

    2024-03-26 05:42:12       34 阅读
  7. 【React】React响应事件

    2024-03-26 05:42:12       43 阅读
  8. 蓝桥杯-子矩阵

    2024-03-26 05:42:12       51 阅读
  9. CSS实现登录样式

    2024-03-26 05:42:12       29 阅读
  10. GraphQL入门之变更输入类型

    2024-03-26 05:42:12       41 阅读
  11. OpenCV图像翻转和旋转

    2024-03-26 05:42:12       37 阅读
  12. 使用OpenCV在Qt C++环境中实现车牌号码的识别

    2024-03-26 05:42:12       38 阅读