比赛 USACO银组复现(ION ONLINE模拟赛) 评测结果 AAAAAAAAAA
题目名称 Cereal 最终得分 100
用户昵称 数声风笛ovo 运行时间 0.251 s
代码语言 C++ 内存使用 15.18 MiB
提交时间 2020-04-05 14:09:36
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int maxn=1e5+9;
  4. int fir[maxn],sec[maxn],ans[maxn]={0};
  5. int have[maxn];
  6. int main(){
  7. freopen("usaco_20Open_cereal.in","r",stdin);
  8. freopen("usaco_20Open_cereal.out","w",stdout);
  9. int m,n;
  10. scanf("%d%d",&n,&m);
  11. for(int i=1;i<=n;i++){
  12. scanf("%d%d",&fir[i],&sec[i]);
  13. }
  14. int tot=0;
  15. for(int i=n;i>=1;i--){
  16. int qwq=i,eats=fir[i];
  17. while(true){
  18. if(!have[eats]){
  19. have[eats]=qwq;
  20. tot++;
  21. break;
  22. }
  23. else if(have[eats]<qwq) break;
  24. else{
  25. int ovo=have[eats];
  26. have[eats]=qwq;
  27. if(eats==sec[ovo]) break;
  28. qwq=ovo;
  29. eats=sec[ovo];
  30. }
  31. }
  32. ans[i]=tot;
  33. }
  34. for(int i=1;i<=n;i++){
  35. printf("%d\n",ans[i]);
  36. }
  37. return 0;
  38. }
  39.