蓝桥杯算法提高训练之分分钟的碎碎念

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

问题描述

以前有个孩子,他分分钟都在碎碎念。不过,他的念头之间是有因果关系的。他会在本子里记录每一个念头,并用箭头画出这个念头的来源于之前的哪一个念头。翻开这个本子,你一定会被互相穿梭的箭头给搅晕,现在他希望你用程序计算出这些念头中最长的一条因果链。

将念头从1到n编号,念头i来源于念头from[i],保证from[i]

输入格式

第一行一个正整数n表示念头的数量

接下来n行依次给出from[1],from[2],…,from[n]

输出格式

共一行,一个正整数L表示最长的念头因果链中的念头数量

样例输入

8

1

3

2

4

2

4

样例输出

3

样例说明

最长的因果链有:

1->2->5 (from[5]=2,from[2]=1,from[1]=0)

1->2->7 (from[7]=2,from[2]=1,from[1]=0)

3->4->6 (from[6]=4,from[4]=3,from[3]=0)

3->4->8 (from[8]=4,from[4]=3,from[3]=0)

数据规模和约定

1<=n<=1000

参考代码见下页

参考代码见下页

参考代码见下页

/**************Powered by Graphene Richards**************/ extern"C++"{

#define FLOAT_PRECISION 2

#ifdef _MSC_VER

#define _SECURE_SCL 0

#pragma comment(linker,"/STACK:102400000,102400000")

#else

#pragma GCC optimize("O3")

#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx") #endif

#if defined(_MSC_VER)||__cplusplus>199711L

#define IT(x) auto

#define DIT(x) auto

#else

#define IT(x) __typeof((x).begin())

#define DIT(x) __typeof((x).rbegin())

#endif

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

#define FAST_RW ios_base::sync_with_stdio(0),cin.tie(0);

#define FS(i,a) for(ll i=0;a[i];i++)

#define FE(it,x) for(IT(x) it=(x).begin(),_en=(x).end();it!=_en;it++)

#define EF(it,x) for(DIT(x) it=(x).rbegin(),_en=(x).rend();it!=_en;it++) #define FR(i,en) for(ll i=0,_en=(en);i<_en;i++)

#define FOR(i,en) for(ll i=1,_en=(en);i<=_en;i++)

#define RF(i,en) for(ll i=(en)-1;i>=0;i--)

#define ROF(i,en) for(ll i=(en);i>0;i--)

#define FFR(i,x,y) for(ll i=(x),_en=(y);i<=_en;i++)

#define RFF(i,x,y) for(ll i=(x),_en=(y);i>=_en;i--)

#define pc putchar

#define pb push_back

#define ppb pop_back

#define pq priority_queue

#define fi first

#define se second

#define mp make_pair

#define pii pair

#define pll pair

#define sqr(x) ((x)*(x))

#define all(x) (x).begin(),(x).end()

#define rall(x) (x).rbegin(),(x).rend()

#define clr(x) memset((x),0,sizeof(x))

#define ms(x,v) memset((x),(v),sizeof(x))

#define mc(x,y) memcpy((x),(y),sizeof(y))

#define NL puts("");

#define LB lower_bound

#define UB upper_bound

#define rand() ((rand()<<16)^(rand()<<15)^(rand()))

#ifdef _WIN32

相关文档
最新文档