AcWing2069.网格分析

【题目链接】2069. 网络分析 - AcWing题库

输入样例1:
4 8
1 1 2
2 1 10
2 3 5
1 4 1
2 2 2
1 1 2
1 2 4
2 2 1
输出样例1:
13 13 5 3

【代码及详细注释】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,p[N],d[N];
//p数组用于维护并查集,d数组用于维护大小 
int find(int x)
{
	if(p[x]==x||p[p[x]]==p[x]) return p[x];
	int r=find(p[x]);
	d[x]+=d[p[x]];//当前点的距离需要加上父节点的距离 
	p[x]=r;
	return r;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) p[i]=i;//初始化并查集
	while(m--)
	{
		int t,a,b;
		cin>>t>>a>>b;
		if(t==1)//执行合并操作
		{
			a=find(a),b=find(b);//找到两个点的父节点
			if(a!=b)//如果不在同一连通块中就进行合并
			{
				d[a]-=d[b];
				p[a]=b;	
			}	
		} 
		else{
			a=find(a);
			d[a]+=b;
		}
	 } 
	for(int i=1;i<=n;i++)
	{
		if(i==find(i)) cout<<d[i];
		else cout<<d[i]+d[find(i)];//如果不是根节点需要输出这条路径上所有的距离和 
		cout<<" ";
	}
	return 0;
}

 

相关推荐

  1. AcWing--因数平方和-->数论,整数分块

    2024-04-06 23:26:04       61 阅读
  2. AWS 网络

    2024-04-06 23:26:04       32 阅读

最近更新

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

    2024-04-06 23:26:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 23:26:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 23:26:04       87 阅读
  4. Python语言-面向对象

    2024-04-06 23:26:04       96 阅读

热门阅读

  1. 全错排列c++代码

    2024-04-06 23:26:04       35 阅读
  2. 2024.3.23力扣每日一题——统计桌面上的不同数字

    2024-04-06 23:26:04       38 阅读
  3. 《深度学习的数学基础》小结

    2024-04-06 23:26:04       42 阅读
  4. 信息化、数字化、智能化、数智化概念剖析

    2024-04-06 23:26:04       39 阅读
  5. 【C++从0到1-黑马程序员】STL常用算法

    2024-04-06 23:26:04       42 阅读
  6. 一些常见的nginx问题和答案

    2024-04-06 23:26:04       43 阅读
  7. 使用宝塔面板安装nginxVOD点播系统

    2024-04-06 23:26:04       42 阅读
  8. Linux初学(十六)NFS文件共享

    2024-04-06 23:26:04       44 阅读
  9. 15、高精度除法(含源码)

    2024-04-06 23:26:04       36 阅读