90pts,求调教
查看原帖
90pts,求调教
602632
_7Mr楼主2023/9/3 11:49
#include<bits/stdc++.h>
#define int long long
#define double long double
#define INF INT_MAX
using namespace std;
const int maxn=1e4+5;
int n,m;
int ans[maxn],sum[maxn],f[maxn];
int find(int x){
	if(f[x]==x) return x;
	else return f[x]=find(f[x]);
}
signed main() {
//  freopen(".in","r",stdin);
//  freopen(".out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>n>>m;
    for(int i=1;i<=n;i++) f[i]=i;
    for(int i=1;i<=m;i++){
    	int op,a,b;
    	cin>>op>>a>>b;
    	if(op==1){
			for(int i=1;i<=n;i++) ans[i]+=sum[find(i)];
			f[find(a)]=find(b);
			memset(sum,0,sizeof(sum));
		}
		if(op==2) sum[find(a)]+=b;
	}
	for(int i=1;i<=n;i++) cout<<ans[i]+sum[find(i)]<<" ";
	cout<<endl;
    return 0;
}


2023/9/3 11:49
加载中...