是数据弱了吗?
查看原帖
是数据弱了吗?
1128376
hh1812827楼主2024/3/30 23:06

是数据弱了吗?我的O(n^2)代码ac了,但在acwing里会TLE

#include<bits/stdc++.h>
using namespace std;

const int N=1e4+5;
int p[N],s[N],v[N];
int n,m;

int find(int x)
{
    if(p[x]!=x)p[x]=find(p[x]);
    return p[x];
}

int main()
{
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++)p[i]=i;    
    for(int i=0;i<m;i++)
    {
        int type,a,b;cin>>type>>a>>b;
        if(type==1)
        {
            if(a==b)continue;
            int pa=find(a),pb=find(b);
            if(pa==pb)continue;
            for(int i=1;i<=n;i++)
            {
                int pi=find(i);
                if(p[i]==pa||p[i]==pb)
                {
                    s[i]+=v[pi];
                }
            }
            v[pa]=v[pb]=0;
            p[pa]=pb;
        }
        else 
        {
            int pa=find(a);
            v[pa]+=b;
        }
    }
    
    for(int i=1;i<=n;i++)
    {
        int pi=find(i);
        s[i]+=v[pi];
        cout<<s[i]<<" ";
    }
    
    return 0;
}
2024/3/30 23:06
加载中...