比赛 2025新春开学欢乐赛 评测结果 AAAAAAAAAA
题目名称 t1 最终得分 100
用户昵称 健康铀 运行时间 2.350 s
代码语言 C++ 内存使用 12.54 MiB
提交时间 2025-02-15 17:47:41
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define F(i,l,r) for(int i=(l);i<=(r);++i)
constexpr int N=2e6+10;
ll dp[N],top,minx,a[N];
int main(){
	freopen("flurryofblows.in","r",stdin);
				freopen("flurryofblows.out","w",stdout);
    ios::sync_with_stdio(0);cin.tie(0);
    int n;cin>>n;
    minx=top=dp[1]=0;a[dp[1]]++;
    F(i,2,n)dp[i]=1e6+10,a[dp[i]]++;
    F(i,1,n){
        int op,x,y;cin>>op>>x;
        if(op==1){
            a[dp[x]+top]--;
            dp[x]=--minx;top++;a[dp[x]+top]++;
        }else{
            cin>>y;
            if(x==y)continue;
            a[dp[y]+top]--;dp[y]=min(dp[y],dp[x]);a[dp[y]+top]++;
            if(minx==dp[x]&&a[minx+top]==1)minx++;
            a[dp[x]+top]--;dp[x]++;a[dp[x]+top]++;
        }
    }
    F(i,1,n)cout<<(dp[i]+top>1e6?-1:dp[i]+top)<<" ";
    cout<<"\n";
    return 0;
}