比赛 USACO银组复现(ION ONLINE模拟赛) 评测结果 AAAAAAAAAA
题目名称 Cereal 最终得分 100
用户昵称 夜莺 运行时间 0.285 s
代码语言 C++ 内存使用 5.92 MiB
提交时间 2020-04-05 14:42:48
显示代码纯文本
#include<cstdio>
using namespace std;
const int MAXN=100005;
struct note{
	int first;
	int second;
}cow[MAXN];
int have[MAXN],ans[MAXN];
int n,m,num;
void dfs(int k,int want){
	if(!have[want]){
		have[want]=k;
		num++;
	}
	else{
		if(k<have[want]){
			int next=have[want];
			have[want]=k;
			if(want==cow[next].first)
				dfs(next,cow[next].second);
		}
	}
}
int main(){
	freopen("usaco_20Open_cereal.in","r",stdin);
	freopen("usaco_20Open_cereal.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		scanf("%d%d",&cow[i].first,&cow[i].second);
	for(int i=n;i>=1;i--){
		dfs(i,cow[i].first);
		ans[i-1]=num;
	}
	for(int i=0;i<n;i++)
		printf("%d\n",ans[i]);
	return 0;
}