比赛 2025新春开学欢乐赛 评测结果 AAAAAAAAAA
题目名称 t1 最终得分 100
用户昵称 李奇文 运行时间 4.856 s
代码语言 C++ 内存使用 12.50 MiB
提交时间 2025-02-15 17:30:43
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,a,d[2000005],f[2000005],tb;
int main(){
	freopen("flurryofblows.in","r",stdin);
	freopen("flurryofblows.out","w",stdout);
	std::cin>>n;
	f[1]=0;
	d[f[1]]++;
	for(int i=2;i<=n;++i){
		f[i]=1e6+10;
		d[f[i]]++;
	}
	for(int i=1;i<=n;++i){
		int t,x;
		std::cin>>t>>x;
		if(t==1){
			d[f[x]+a]--;
			f[x]=--tb,a++;
			d[f[x]+a]++;
		}else{
			int y;
			std::cin>>y;
			if(x==y) continue;
			d[f[y]+a]--;
			f[y]=min(f[y],f[x]);
			d[f[y]+a]++;
			if(tb==f[x]&&d[tb+a]==1) tb++;
			d[f[x]+a]--;
			f[x]++;
			d[f[x]+a]++;
		}
	}
	for(int i=1;i<=n;++i){
		if(a+f[i]>1e6){
			std::cout<<-1<<" ";
		}else{
			std::cout<<f[i]+a<<" ";
		}
	}
	return 0;
}