历届真题 小朋友崇拜圈【第九届】【省赛】【C组】——【C++】【C】【Java】【Python】四种语言解法
整个题目:
资源限制
内存限制: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】四种语言解法相关推荐
- [蓝桥杯][2018年第九届真题]小朋友崇拜圈、耐摔指数、堆的计数、缩位求和、约瑟夫环
个人题解链接,蓝桥杯历届试题,正在更新中~ 文章目录 个人题解链接,蓝桥杯历届试题,正在更新中~ 小朋友崇拜圈 耐摔指数 堆的计数 缩位求和 约瑟夫环 小朋友崇拜圈 题目描述 班里N个小朋友,每个人都 ...
- [蓝桥杯][2018年第九届真题]小朋友崇拜圈(简单图论)
题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己). 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边. 求满足条件的圈最大多少人? 小朋友编号 ...
- 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案
2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. ...
- 【蓝桥杯真题】2021年蓝桥杯省赛A组题目解析+代码(python组)
2021年蓝桥杯省赛A组题解(python组) 来自微信公众号:算法梦工厂,二维码见文末. 欢迎加入蓝桥杯备赛群:768245918,获取往届试题,测试数据,算法课程等相关资源. A:卡片 答案:31 ...
- 试题 历届真题 带分数【第四届】【省赛】【A组】
一.题目 二.代码 调用itertools库,进行n = a + b / c中a.c的全排列,再利用b=nc - ac,求出b,然后判断b是否满足不重,且和a.c的并集是1~9,permutation ...
- 蓝桥杯第九届省赛B组c/c++
1.第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 解题思路: 直接算或者借助Excel表 ,20 ...
- Java实现第九届蓝桥杯小朋友崇拜圈
小朋友崇拜圈 题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己). 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边. 求满足条件的圈最大多少人 ...
- 蓝桥杯javaB决赛历届真题6-10届
蓝桥杯javaB决赛历届真题 第六届 T1 分机号 T2 五星填数 T3 显示二叉树 T4 穿越雷区 T5 表格计算 T6 铺瓷砖 第七届 T1 愤怒小鸟 T2 反幻方 T3 打靶 T4 路径之谜 T ...
- 2018第九届蓝桥杯JavaB组省赛真题及详解
2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...
最新文章
- 业务库负载翻了百倍,我做了什么来拯救MySQL架构?
- python 中sys.stdout.write 和 print sys.stdout的区别(转)
- 用 Opencv 和 Python 模糊检测
- asp.net网页上嵌入Flash显示
- [学习笔记]上下界网络流
- 平板的android版本是5.0.2,EMUI5.0荣耀平板2升级固件下载
- java 动态增加线程,java - 在Java中动态停止线程 - SO中文参考 - www.soinside.com
- js两种生成对象模式(公有成员和成员私有)
- Link error 1112
- 【操作系统】存储器管理01-思维导图
- yuv图片拼接 java_java利用ffmpeg把图片转成yuv格式
- 计算机网络专业运动会入场式,高校运动会方阵入场式花样百出
- iOS集成twitter分享
- 计算机磁盘管理看不到盘符,Win10系统本地磁盘盘符不见了的解决方法
- ORACLE的连接模式——专用服务器和共享服务器
- 深入浅出强化学习:原理入门(待更新)
- 树莓派有线网络设置_树莓派的基本网络配置
- 交换机POE技术知识大全
- ZJU PTA ds 6-1 Percolate Up and Down
- Linux:网络五元组tcp、udp特性
热门文章
- 【solr】 - SolrCloud
- canvas绘制video
- 用计算机唱歌教学,一种利用计算机软件自动教学乐器和唱歌的方法与流程
- 值得收藏的Microsoft SQL Server下的SQL语句
- SQL 新旧两张表数据对比是否一致
- mysql 存储过程 控制台_mysql 存储过程 调试
- 【北航操作系统】2020春课堂测试及答案
- 国产手机的几种品牌发展模式
- C++函数与结构体——最厉害的学生
- java.lang.IllegalStateException: No instances available for eurekaclient