题目名称 280. [USACO Dec08] 奶牛的糖果
输入输出 treat.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarzqzas 于2009-02-22加入
开放分组 全部用户
提交状态
分类标签
USACO 图论 模拟
分享题解
通过:61, 提交:231, 通过率:26.41%
Gravatar水中音 100 0.135 s 1.55 MiB C++
Gravatar赵日天 100 0.142 s 2.39 MiB C++
Gravatarcctype 100 0.145 s 2.29 MiB C++
Gravatar天空非翔 100 0.146 s 1.82 MiB C++
Gravatar...... 100 0.149 s 1.82 MiB C++
GravatarRP++ 100 0.152 s 1.40 MiB C++
GravatarRP++ 100 0.152 s 1.55 MiB C++
Gravatarhzoi55223 100 0.153 s 1.55 MiB C++
Gravatar 100 0.157 s 1.55 MiB C++
Gravatarstarsing 100 0.157 s 3.20 MiB C++
本题关联比赛
20130729
20130729
关于 奶牛的糖果 的近10条评论(全部评论)
Tarjan缩点
GravatarHZOI_RXR
2019-02-17 21:13 14楼
NOIP2015的“信息传递”基本是这道题简化版。。。
Gravatarliu_runda
2015-12-08 10:28 13楼
注意到每个点出度为1。。。分析一下就会发现问题实际上特别简单。。简单的模拟一下那个过程就好了,分析完即:随便抓一个没到过的点一直走,总会走到一个环,即便这个环可能只有自身,然后即可更新路上所有点的答案。代码的实现本质上感觉就是模拟。。。
Gravatar赵日天
2015-09-21 00:08 12楼
深搜撸过
Gravatar乌龙猹
2014-10-25 15:07 11楼
Gravatar水中音
2014-10-14 15:26 10楼
mark
GravatarEzio
2014-09-24 23:00 9楼
写的太复杂了,简直不能忍。。。还好过了
Gravatarwolf
2014-07-18 14:53 8楼
我想到了几个优化点,第一个是每算完一头牛后把它经过牛棚的牛顺便也给算了,第二个是算的时候借用之前的答案,第三个是如果算过了就别算了。
GravatarFoolMike
2014-07-17 20:31 7楼
求大神讲解倒数第二个点啊!
GravatarFoolMike
2014-07-17 09:13 6楼
Gravatar‘’
2014-07-17 09:07 5楼

280. [USACO Dec08] 奶牛的糖果

★☆   输入文件:treat.in   输出文件:treat.out   简单对比
时间限制:1 s   内存限制:128 MiB

在威斯康星州每年万圣节前夕奶牛们要通过盛装打扮和收集糖果进行庆祝,农夫约翰把奶牛们留在了他的N (1 <= N <= 100,000)个牛栏中。

因为牛栏不是足够的大,约翰让奶牛按指定的路线在牛栏间行走。他在牛栏i布置下一个牛栏号next_i (1 <= next_i <= N),以告诉奶牛要怎么行走到下一个牛栏。奶牛需要这样行走以搜集更多的糖果。

约翰要求奶牛i从i号牛栏开始行走搜集糖果。一头奶牛一旦返回她访问过的牛栏时将停止行走。

计算每头奶牛访问过的牛栏数,也就是每头奶牛曾经搜集糖果的位置数。

输入格式:

  第一行:一个单独的整数N

  第2..N+1行:第i+1行包含一个单独的整数next_i

SAMPLE INPUT (file treat.in):

4

1

3

2

3


输入解释:


四个牛栏.

 * 牛栏 1 直接让奶牛返回 牛栏 1.

 * 牛栏 2 让奶牛去 牛栏 3

 * 牛栏 3 让奶牛去 牛栏 2

 * 牛栏 4 让奶牛去 牛栏 3


输出格式:

* 第1..N行: 行 i 包含一个单独的整数表示曾经访问牛栏的总数

SAMPLE OUTPUT (file treat.out):

1

2

2

3

输出解释:

奶牛1: 开始于 1, 下一个是 1. 总共访问数是 1.

奶牛2: 开始于 2, 下一个是 3, 下一个是 2. 总共访问数是 2.

奶牛3: 开始于 3, 下一个是 2, 下一个是 3. 总共访问数是 2.

奶牛4: 开始于 4, 下一个是 3, 下一个是 2, 下一个是 3. 总共访问数是 3.