【usaco 2013 feb Bronze】信息传递
来源:互联网 发布:floyd算法 路径 编辑:程序博客网 时间:2024/05/29 08:24
题目:
农夫约翰的奶牛通常是按1到N进行编号的,奶牛们相互之间有一种特殊的信息传输方式。在信息传递的过程中,每只奶牛的信息最多传递到另一只奶牛,对于奶牛i,Fi表示他要传递信息的那只奶牛的编号,这里i和Fi肯定是不同的,如果Fi是0,则表示奶牛i没有要传递信息给其他的奶牛。
不幸的是,奶牛们知道了这种传递信息的方式可能会导致一个死循环。如果一个奶牛传递信息最终会导致一个死循环,那么我们就说这只奶牛在死循环里面。
问题描述:
农夫约翰的奶牛通常是按1到N进行编号的,奶牛们相互之间有一种特殊的信息传输方式。在信息传递的过程中,每只奶牛的信息最多传递到另一只奶牛,对于奶牛i,Fi表示他要传递信息的那只奶牛的编号,这里i和Fi肯定是不同的,如果Fi是0,则表示奶牛i没有要传递信息给其他的奶牛。
不幸的是,奶牛们知道了这种传递信息的方式可能会导致一个死循环。如果一个奶牛传递信息最终会导致一个死循环,那么我们就说这只奶牛在死循环里面。
问题描述:
请帮助奶牛们计算有多少头奶牛没有在死循环里面。
题解:
最后不指向0的牛都死了。
代码:
var a,b:array[1..10000] of longint; f:array[0..10000] of boolean; n,i,j,l:longint;begin assign(input,'relay.in');reset(input); assign(output,'relay.out');rewrite(output); readln(n); for i:=1 to n do readln(a[i]); fillchar(b,sizeof(b),0); for i:=1 to n do begin j:=i; fillchar(f,sizeof(f),false); while j>0 do begin if f[j] then begin f[0]:=true; break; end; f[j]:=true; j:=a[j]; end; if f[0] then for j:=1 to n do if f[j] then b[j]:=1; end; for i:=1 to n do if b[i]=0 then inc(l); writeln(l); close(input);close(output);end.
3 0
- 【usaco 2013 feb Bronze】信息传递
- 【usaco 2013 feb Bronze】信息传递
- 【usaco 2013 feb Bronze】计算周长
- 【usaco 2013 feb Bronze】计算周长
- Bronze Lilypad Pond, 2007 Feb usaco
- USACO 2015 Feb Bronze 1.Censoring (Bronze) 栈+Hash
- 【usaco 2013 Mar Bronze】
- 1746. 【usaco 2013 feb Bronze】粉刷栅栏(Painting the Fence)
- USACO 2013 March contest Bronze level 总结
- 【usaco 2013 Mar Bronze】种类分配
- 【usaco 2013 Mar Bronze】种类分配
- [USACO] OPEN11 Bronze Division
- usaco 2008 jan bronze
- 【USACO】JAN.BRONZE
- USACO January 2014 Bronze Level
- angryA (USACO 2016 JAN Bronze)
- USACO 2009 Feb StockMarket
- USACO 2002 Feb CowCycling
- **PYTHON** 函数
- c++ inline 的一些小知识
- shell脚本
- 判断单链表是否含环
- Mysql常见sql
- 【usaco 2013 feb Bronze】信息传递
- 以下是C++的不同数据类型值的比较语句,请问这些判断语句中作为条件部分的语句编写有问题的有:
- 什么是html5
- 《Windows程序设计》读书笔十 菜单和其他资源
- 网络框架-volley
- 7.2 相关向量机
- sql中的触发器
- Longest Valid Parentheses
- 句子逆序