记录编号 | 66504 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [USACO Dec08] 奶牛的糖果 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 1.022 s | ||
提交时间 | 2013-07-29 17:16:33 | 内存使用 | 2.01 MiB | ||
#include <fstream> using namespace std; ifstream fin("treat.in"); ofstream fout("treat.out"); int f[111111],p[111111],q[111111],v[111111],n,i; int init() { fin>>n; for(int i=1;i<=n;i++) { fin>>p[i]; } return 0; } int main() { init(); for(int i=1;i<=n;i++) { if(!v[i]) { int r=0; q[r]=v[i]=i; for(;!v[p[q[r]]];v[q[++r]=p[q[r-1]]]=i); if(v[p[q[r]]]==i) { int u=p[q[r]],j=r; for(;q[j]!=u;--j); int t=j-1; f[q[r]]=r-j+1; for(;j<r;f[q[j++]]=f[q[r]]); r=t; } else q[r+1]=p[q[r]]; for(;r>=0;f[q[r--]]=f[q[r+1]]+1); } fout<<f[i]<<endl; } fin.close(); fout.close(); return 0; }