比赛 |
USACO银组复现(ION ONLINE模拟赛) |
评测结果 |
AAAAAAAAAA |
题目名称 |
Cereal |
最终得分 |
100 |
用户昵称 |
魔笛 |
运行时间 |
3.069 s |
代码语言 |
C++ |
内存使用 |
3.36 MiB |
提交时间 |
2020-04-06 17:25:58 |
显示代码纯文本
#include <cstdio>
#include<iostream>
using namespace std;
int n,m,cnt,n1[100010],n2[100010],bel[100010],ans[100010];
void search(int x,int y){
if(!bel[y]){
bel[y]=x;
cnt++;
}else if(bel[y]>x){ //被编号大的牛拿走
int tmp=bel[y];
bel[y]=x;
if(y==n1[tmp])
search(tmp, n2[tmp]);
}
}
int main() {
freopen("usaco_20Open_cereal.in","r",stdin);
freopen("usaco_20Open_cereal.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>n1[i]>>n2[i];
for(int i=n;i>0;i--){
search(i,n1[i]);
ans[i-1]=cnt;
}
for(int i=0;i<n;i++) cout<<ans[i]<<endl;
return 0;
}