1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

  • 将每个数看作一个点,若 ai & aj != 0 则两点间连一条无向边,求图的最短环长度(环的最小长度为 3)。

  • 关键剪枝:若某一位的置位数量 ≥ 3,则这三个点两两都有该位相连,答案必为 3。又因为最高只需考虑 0~60 位(ai ≤ 1e18),若非零数的个数 m > 120,按抽屉原理必有某位出现 ≥3 次,直接输出 3。

  • 否则每一位最多出现 2 次,非零点数 m ≤ 120。此时可以把这些点显式建图:

    • 对所有两两点判断一次按位与是否为正,若是则加边。
    • 用 BFS 从每个起点求最短环:BFS 过程中若遇到已访问且不是父亲的点 v,就发现了一个环,长度更新为 dist[u] + dist[v] + 1。
  • 若最终没有发现环,输出 -1。

P4347.第3题-最短的环

    1000ms Tried: 141 Accepted: 22 Difficulty: 9 所属公司 : 华为
    算法与标签>BFS

题目内容

考虑一个有 nnn 个节点的图,每个节点对应一个整数,其有 nnn 个整数

a1,a2,a3,…,ana_1,a_2,a_3,…,a_na1​,a2​,a3​,…,an​ ,当且仅当 aia_iai​ & aj≠0a_j≠0aj​=0 时表示节点 iii 和节点 j(i≠j)j(i≠j)j(i=j) 之间有一条边,其中 & 表示按位与操作。

例如:

333 & 6:36:36:3 的二进制表示是 0110 1 1011 ,666 的二进制表示是 110110110,333 & 6=26=26=2 (二进制 010010010 )不为 000 ,表示 333 和 666 之间有一条边。

333 & 28:328:328:3 的二进制表示是 000110001100011,282828 的二进制表示是 111001110011100 ,333 & 28=028=028=0 ,表示 333 和 282828 之间没有边。

请找出该图中最短的环的长度(环的最小长度是 333 ),如果图中没有环输出 −1-1−1 。

输入描述

第一行输入一个整数 n(1≤n≤106)n(1≤n≤10^6)n(1≤n≤106) ,表示数字的个数。

第二行输入 nnn 个整数 a1,a2,…,an(0≤ai≤1018)a_1,a_2,…,a_n(0≤a_i≤10^{18})a1​,a2​,…,an​(0≤ai​≤1018),表示数字序列。(输入的数字有可能重复)

输出描述

如果图中没有环,输出 −1-1−1 。

否则输出最短环的长度。

样例1

输入

10
448 0 112 0 0 0 28 260 3 0

输出

4

说明

448448448 112112112 282828 260260260 333 的二进制表示为:

448:111000000448:111000000448:111000000

112:001110000112:001110000112:001110000

28:00001110028:00001110028:000011100

260:100000100260:100000100260:100000100

3:0000000113:0000000113:000000011

448448448 −112-112−112 −28-28−28 −260-260−260 构成环,长度为 444 。

样例2

输入

1
1000000000000000000

输出

-1

说明

一个节点无法构成环

样例3

输入

4
1 2 4 8

输出

-1

说明

111 222 444 888 的二进制表示为:

1:00011:00011:0001

2:00102:00102:0010

4:01004:01004:0100

8:10008:10008:1000

节点之间两两没有连接,无法构成环。

样例4

输入

4
3 6 28 5

输出

3

说明

333 666 282828 555 的二进制表示为:

3:000113:000113:00011

6:001106:001106:00110

28:1110028:1110028:11100

5:001015:001015:00101

333 和 666 相连,666 和 282828 相连,555 和 333 相连,3−6−53-6-53−6−5 构成了一个环,长度为 333

样例5

输入

4
3 6 28 9

输出

4

说明

333 666 282828 999 的二进制表示为:

3:000113:000113:00011

6:001106:001106:00110

28:1110028:1110028:11100

9:010019:010019:01001

333 和 666 相连,666 和 282828 相连,282828 和 999 相连,999 和 333 相连,3−6−28−93-6-28-93−6−28−9 构成了一个环,长度为 444

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 0, 73ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?