#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=10010;
vector<int> edge[maxn];
int fa[maxn];
int ans[maxn],tag[maxn];
int get(int x) {
return fa[x]==x?x:fa[x]=get(fa[x]);
}
signed main() {
cin.tie(0), cout.tie(0);
ios::sync_with_stdio(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=m;i++) {
int op,x,y;
cin>>op>>x>>y;
if(op==1) {
int fax=get(x),fay=get(y);
if(fax==fay) continue;
for(int i=1;i<=n;i++) {
ans[i]+=tag[get(i)];
}
for(int i=1;i<=n;i++) tag[i]=0;
fa[fay]=fax;
}
else {
tag[get(x)]+=y;
}
}
for(int i=1;i<=n;i++) cout<<ans[i]+tag[get(i)]<<" ";
return 0;
}
我写的代码的时间复杂度应该是 O(n2+m) 的,为什么能过呢?