求优化(70分)
查看原帖
求优化(70分)
1053119
hard_learn楼主2024/7/12 14:19
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,o=0;
int a[10005],ss[10005];
int find(int x){
	if(a[x]==x){
		return x;
	}
	else{
		return a[x]=find(a[x]);
	}
}
void unit(int i,int j){
	a[find(i)]=find(j);
}
void fz(int x,int sum){
	for(int i=1;i<=n;i++){
		if(find(i)==find(x)){
			ss[i]+=sum;
		}
	}
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<10005;i++){
		a[i]=i;
	}
	for(int i=1;i<=m;i++){
		int op;
		cin>>op;
		if(op==1){
			int a,b;
			cin>>a>>b;
			unit(a,b);
		}
		else{
			int p,t;
			cin>>p>>t;
			fz(p,t);
		}
	} 
	for(int i=1;i<=n;i++){
		cout<<ss[i]<<" ";
	}
    return 0;
}
2024/7/12 14:19
加载中...