整个题目:

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

  班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己)。
  在一个游戏中,需要小朋友坐一个圈,
  每个小朋友都有自己最崇拜的小朋友在他的右手边。
  求满足条件的圈最大多少人?

  小朋友编号为1,2,3,...N
  输入第一行,一个整数N(3<N<100000)
  接下来一行N个整数,由空格分开。

  要求输出一个整数,表示满足条件的最大圈的人数。

  例如:

输入格式

  9
  3 4 2 5 3 8 4 6 9

  则程序应该输出:
  4

  解释:
  如图所示,崇拜关系用箭头表示,红色表示不在圈中。


  显然,最大圈是[2 4 5 3] 构成的圈

  再例如:

输入格式

  30
  22 28 16 6 27 21 30 1 29 10 9 14 24 11 7 2 8 5 26 4 12 3 25 18 20 19 23 17 13 15

  程序应该输出:
  16

  资源约定:
  峰值内存消耗(含虚拟机) < 256M
  CPU消耗 < 1000ms

  请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

  所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
  不要使用package语句。不要使用jdk1.7及以上版本的特性。
  主类的名字必须是:Main,否则按无效代码处理。


简单分析:

查长度,那么可以认为是dfs搜索,搜完了比每条线的长度就可以了。所以,难度还是可以的。

C++

#include<iostream>
#include<algorithm>
using namespace std;
int vis[100009];
int ans;
int indug[100009];
int vis1[100009];
void dfs(int n,int qi,int l)
{if(vis[n]==qi){ans=max(ans,l); return;}vis1[vis[n]]=1;dfs(vis[n],qi,l+1);
}
int main()
{int n;cin>>n;for(int i=1;i<=n;i++){cin>>vis[i];indug[vis[i]]++;}for(int i=1;i<=n;i++){if(vis1[i]==0&&indug[i]!=0){vis1[i]=1;dfs(i,i,1);}}cout<<ans;return 0;
}

C

#include<stdio.h>
#define MAX 100005
int state[MAX];
int arr[MAX];
int ans;
void dfs(int k,int step){if(state[arr[k]]!=0){if(step-state[arr[k]]+1>ans)ans=step-state[arr[k]]+1;return;}state[k]=step;dfs(arr[k],step+1);
}
int main()
{int n;scanf("%d",&n);int i;for(i=1;i<=n;i++)scanf("%d",&arr[i]);for(i=1;i<=n;i++)dfs(i,1);printf("%d",ans);return 0;
}

Java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;public class Main {public static void main(String[] args) throws IOException {n = nextInt();isWorship = new boolean[n+1];a = new int[n+1];for(int i = 1;i <= n;i++) {int x = nextInt();isWorship[x] = true;a[i] = x;}for(int i = 1;i <= n;i++) {if(isWorship[i]) {start = i;dfs(i,0);}}System.out.println(max);}private static void dfs(int x, int s) {if(x > n) return;if(x == start && s != 0) {max = Math.max(s, max);return;}if(!isWorship[x]) {return;}isWorship[x] = false;dfs(a[x],s+1);}static int nextInt() throws IOException {st.nextToken();return (int) st.nval;}static StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static int start,a[],n,max;static boolean[] isWorship;
}

Python

from collections import defaultdictn=int(input())
l=[0]+list(map(int,input().split()))
vis=defaultdict(int)
ans=0for i in range(1,n+1):if not vis[i]:now=l[i]k=1vis[i]=kwhile not vis[now]:k+=1vis[now]=know=l[now]ans=max(ans,k-vis[now]+1)
print(ans)

历届真题 小朋友崇拜圈【第九届】【省赛】【C组】——【C++】【C】【Java】【Python】四种语言解法相关推荐

  1. [蓝桥杯][2018年第九届真题]小朋友崇拜圈、耐摔指数、堆的计数、缩位求和、约瑟夫环

    个人题解链接,蓝桥杯历届试题,正在更新中~ 文章目录 个人题解链接,蓝桥杯历届试题,正在更新中~ 小朋友崇拜圈 耐摔指数 堆的计数 缩位求和 约瑟夫环 小朋友崇拜圈 题目描述 班里N个小朋友,每个人都 ...

  2. [蓝桥杯][2018年第九届真题]小朋友崇拜圈(简单图论)

    题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己). 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边. 求满足条件的圈最大多少人? 小朋友编号 ...

  3. 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案

    2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. ...

  4. 【蓝桥杯真题】2021年蓝桥杯省赛A组题目解析+代码(python组)

    2021年蓝桥杯省赛A组题解(python组) 来自微信公众号:算法梦工厂,二维码见文末. 欢迎加入蓝桥杯备赛群:768245918,获取往届试题,测试数据,算法课程等相关资源. A:卡片 答案:31 ...

  5. 试题 历届真题 带分数【第四届】【省赛】【A组】

    一.题目 二.代码 调用itertools库,进行n = a + b / c中a.c的全排列,再利用b=nc - ac,求出b,然后判断b是否满足不重,且和a.c的并集是1~9,permutation ...

  6. 蓝桥杯第九届省赛B组c/c++

    1.第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 解题思路: 直接算或者借助Excel表 ,20 ...

  7. Java实现第九届蓝桥杯小朋友崇拜圈

    小朋友崇拜圈 题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己). 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边. 求满足条件的圈最大多少人 ...

  8. 蓝桥杯javaB决赛历届真题6-10届

    蓝桥杯javaB决赛历届真题 第六届 T1 分机号 T2 五星填数 T3 显示二叉树 T4 穿越雷区 T5 表格计算 T6 铺瓷砖 第七届 T1 愤怒小鸟 T2 反幻方 T3 打靶 T4 路径之谜 T ...

  9. 2018第九届蓝桥杯JavaB组省赛真题及详解

    2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...

最新文章

  1. 业务库负载翻了百倍,我做了什么来拯救MySQL架构?
  2. python 中sys.stdout.write 和 print sys.stdout的区别(转)
  3. 用 Opencv 和 Python 模糊检测
  4. asp.net网页上嵌入Flash显示
  5. [学习笔记]上下界网络流
  6. 平板的android版本是5.0.2,EMUI5.0荣耀平板2升级固件下载
  7. java 动态增加线程,java - 在Java中动态停止线程 - SO中文参考 - www.soinside.com
  8. js两种生成对象模式(公有成员和成员私有)
  9. Link error 1112
  10. 【操作系统】存储器管理01-思维导图
  11. yuv图片拼接 java_java利用ffmpeg把图片转成yuv格式
  12. 计算机网络专业运动会入场式,高校运动会方阵入场式花样百出
  13. iOS集成twitter分享
  14. 计算机磁盘管理看不到盘符,Win10系统本地磁盘盘符不见了的解决方法
  15. ORACLE的连接模式——专用服务器和共享服务器
  16. 深入浅出强化学习:原理入门(待更新)
  17. 树莓派有线网络设置_树莓派的基本网络配置
  18. 交换机POE技术知识大全
  19. ZJU PTA ds 6-1 Percolate Up and Down
  20. Linux:网络五元组tcp、udp特性

热门文章

  1. 【solr】 - SolrCloud
  2. canvas绘制video
  3. 用计算机唱歌教学,一种利用计算机软件自动教学乐器和唱歌的方法与流程
  4. 值得收藏的Microsoft SQL Server下的SQL语句
  5. SQL 新旧两张表数据对比是否一致
  6. mysql 存储过程 控制台_mysql 存储过程 调试
  7. 【北航操作系统】2020春课堂测试及答案
  8. 国产手机的几种品牌发展模式
  9. C++函数与结构体——最厉害的学生
  10. java.lang.IllegalStateException: No instances available for eurekaclient