比赛 |
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;
}