当前位置: 首页 > news >正文

neuq-acm预备队训练week 8 P2661 [NOIP2015 提高组] 信息传递

题目背景

NOIP2015 Day1T2

题目描述

有 n 个同学(编号为 1 到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学。

游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游戏结束。请问该游戏一共可以进行几轮?

题目限制

输入格式

输出格式

共一行一个整数,表示游戏一共可以进行多少轮。

输入输出样例

解题思路

把每个同学看成一个点,信息的传递就是在他们之间连有向边,游戏轮数就是求最小环

AC代码

#include <bits/stdc++.h>
using namespace std;
int n,Min,last;
int f[200005],d[200005];
int F(int x);
void check(int a,int b);
int main()
{int t;Min=0x7777777;cin>>n;for(int i=1;i<=n;i++)f[i]=i;for(int i=1;i<=n;i++){cin>>t;check(i,t);}cout<<Min;return 0;
}void check(int a,int b)
{int x=F(a),y=F(b);if (x!=y){f[x]=y;d[a]=d[b]+1;}   //若不相连,则连接两点,更新父节点和路径长。elseMin=min(Min,d[a]+d[b]+1);    //若已连接,则更新最小环长度
}int F(int x)
{if(f[x]!=x){int last=f[x];f[x]=F(f[x]);d[x]+=d[last];}return f[x];
}

http://www.lryc.cn/news/256839.html

相关文章:

  • 《C++新经典设计模式》之第18章 备忘录模式
  • OWASP安全练习靶场juice shop-更新中
  • 当使用RSA加密,从手机前端到服务器后端的请求数据存在+
  • BUUCTF crypto做题记录(3)新手向
  • SpringMVC修炼之旅(2)基础入门
  • matlab 最小二乘拟合空间直线(方法二)
  • ASPICE-汽车软件开发能力评级
  • 准确!!!在 CentOS 8 上配置 PostgreSQL 14 的主从复制
  • leetcode 1466
  • 想学编程,但不知道从哪里学起,应该怎么办?
  • Python数据科学视频讲解:Python概述
  • 数据结构之内部排序
  • 软考高级备考-系统架构师(机考后新版教材的备考过程与资料分享)
  • Spring Boot 整合kafka:生产者ack机制和消费者AckMode消费模式、手动提交ACK
  • Java+Swing: 主界面组件布局 整理9
  • pytorch:YOLOV1的pytorch实现
  • YOLOv8配置文件yolov8.yaml解读
  • 4-Tornado高并发原理
  • 基于以太坊的智能合约开发Solidity(事件日志篇)
  • 【BME2112】w11 notes
  • Flutter笔记:滑块及其实现分析1
  • 【React Hooks】useReducer()
  • 如何把kubernetes pod中的文件拷贝到宿主机上或者把宿主机上文件拷贝到kubernetes pod中
  • Android 13 - Media框架(20)- ACodec(二)
  • TCP单聊和UDP群聊
  • 智能优化算法应用:基于鲸鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • TortoiseGit 小乌龟svn客户端软件查看仓库地址
  • uniapp微信小程序分包,小程序分包
  • 『Linux升级路』进度条小程序
  • 使用rust slint开发桌面应用