【tyvj1033】悠闲的漫步
来源:互联网 发布:不加群提取群成员软件 编辑:程序博客网 时间:2024/04/27 22:46
描述
Bessie透过牛棚的大门向外望去。发现今天是一个美丽的春季早晨。她想,“我真的好想好想沐浴著春风,走在草地之中,感受嫩草温柔地抚摸四蹄地的感觉。”她知道一旦她离开了牛棚,她将沿著一条小径走一段路,然后就会出现一个三岔路口,她必须在两条小径中选择一条继续走下去。然后她又会遇到更多的三岔路口,进行更多的选择,知道她到达一个青翠的牧场為止。
她决定坐一个选择使得她在去吃早草的路途中可以走过最多的小径。给你这些小径的描述,要求Bessie最多可以走过多少条小径。假定Bessie一出牛棚就有2条路径,Bessie需要从中选择一条。
农场中有P-1 (1 <= P <= 1,000) 个分岔节点(范围是1..P),引向P片草地,它们之间由小径连接。对任意一个节点来说,只有一条从牛棚(被标记為节点1)开始的路径可以到达。
考虑下面的图。线段表示小径,"%"表示草地。右边的图中的"#"表示一条到达草地的高亮的路径。
% %
/ /
2----% 7----8----% 2----% 7####8----%
/ \ / \ # # # #
1 5----6 9----% 1 5####6 9----%
\ \ \ \ \ \ \ #
\ % % % \ % % %
\ \
3-----% 3-----%
\ \
4----% 4----%
\ \
% %
从分岔节点9到达的草地是两个可以让Bessie走过最多小径的草地之一。在去吃早草的路上Bessie将走过7条不同的小径。这些草地是离牛棚也就是节点1最“远”的。
由3个整数来表示每一个节点:Cn, D1和D2,Cn是节点的编号(1 <= Cn <= P-1); D1和D2是由该节点引出的两条小径的终点(0 <= D1 <= P-1; 0 <= D2 <= P-1)。如果D1為0,表示这条小径引向的是一片牧草地;D2也一样。
她决定坐一个选择使得她在去吃早草的路途中可以走过最多的小径。给你这些小径的描述,要求Bessie最多可以走过多少条小径。假定Bessie一出牛棚就有2条路径,Bessie需要从中选择一条。
农场中有P-1 (1 <= P <= 1,000) 个分岔节点(范围是1..P),引向P片草地,它们之间由小径连接。对任意一个节点来说,只有一条从牛棚(被标记為节点1)开始的路径可以到达。
考虑下面的图。线段表示小径,"%"表示草地。右边的图中的"#"表示一条到达草地的高亮的路径。
% %
/ /
2----% 7----8----% 2----% 7####8----%
/ \ / \ # # # #
1 5----6 9----% 1 5####6 9----%
\ \ \ \ \ \ \ #
\ % % % \ % % %
\ \
3-----% 3-----%
\ \
4----% 4----%
\ \
% %
从分岔节点9到达的草地是两个可以让Bessie走过最多小径的草地之一。在去吃早草的路上Bessie将走过7条不同的小径。这些草地是离牛棚也就是节点1最“远”的。
由3个整数来表示每一个节点:Cn, D1和D2,Cn是节点的编号(1 <= Cn <= P-1); D1和D2是由该节点引出的两条小径的终点(0 <= D1 <= P-1; 0 <= D2 <= P-1)。如果D1為0,表示这条小径引向的是一片牧草地;D2也一样。
输入格式
* 第1行: 一个单独的整数: P
* 第2到第P行: 第i+1行有3个由空格隔开的整数,表示一个分岔节点Cn, D1和D2。
* 第2到第P行: 第i+1行有3个由空格隔开的整数,表示一个分岔节点Cn, D1和D2。
输出格式
* 第一行: 一个单独的整数,表示Bessie去最远的草地的路上最多可以走过的小径的数目。
测试样例1
输入
10
7 8 0
5 0 6
9 0 0
6 0 7
3 4 0
2 5 0
8 0 9
4 0 0
1 2 3
输出
7
备注
1-2-5-6-7-8-9-P是最长的一条路径之一。
深搜找最大深度即可
【代码】
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int p,s,t1,t2;bool b[1005];int h[1005];int a[1005][2];inline void dfs(int dep,int x){h[x]=max(h[x],dep);if (x==0) return;for (int i=1;i<=2;++i){int v=a[x][i];if (!b[v]||!v){b[v]=true;dfs(dep+1,v);}}}int main(){scanf("%d",&p);for (int i=1;i<=p;++i) b[i]=true;for (int i=1;i<=p-1;++i){scanf("%d%d%d",&s,&t1,&t2);a[s][1]=t1; a[s][2]=t2;b[s]=false;}b[1]=true;dfs(1,1);printf("%d",h[0]-1);}
0 0
- 【tyvj1033】悠闲的漫步
- Tyvj P1033 悠闲的漫步
- 悠闲的一个早上
- 悠闲的一天
- 攒点钱,为了日后的悠闲
- 今天是最后的悠闲。
- 【英国】伦敦郊外的悠闲周末
- 第八周 从0开始悠闲的一周
- 学会悠闲
- 漫步在致富的路上
- 2006-11-5 悠闲啊~真悠闲
- 也许本我本来就是那天空中悠闲的云朵
- 悠闲时,可以在阳光沐浴中读喜欢的诗歌。
- 悠闲的老鼠动画片,小鼠波波 Maisy教孩子学英语
- 漫步云端 Java开发者的新选择
- 漫步在熙熙攘攘的大街上
- 云中漫步 Simon_fu 的文章good
- 随机漫步问题 :醉酒的蟑螂
- java.lang.Comparable接口小结
- 安卓开发黄金搭档:android-studio+Genymotion模拟器
- 手机屏幕材料区别 TFT和OLED
- openjudge telephone wire
- 操作系统 — 线程
- 【tyvj1033】悠闲的漫步
- CMakeList.txt中包含父目录文件
- matlab plot函数画线,线型和颜色
- ps 做放大镜效果
- 联想因为Lenovo Service Engine BIOS再一次陷入麻烦
- 【bzoj1433】[ZJOI2009]假期的宿舍
- python httplib学习笔记
- Tkinter 8.5 参考手册: a GUI for Python (五)
- Tkinter 8.5 参考手册: a GUI for Python (五)1