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

P3416-图论-法1.BFS / 法2.Floyd

这道题虽然标签有floyd但是直接bfs也能过

其实事实证明还是bfs快,因为bfs只需要遍历特定的点,但是floyd需要考虑遍历所有可能的中介点

法1.BFS

用字典存储每个点所能普及的范围,然后用对每个点bfs进行拓展

n=int(input())temp=[]#xmax=0;ymax=0
for i in range(n):te=list(map(int,input().split()))'''xmax=max(xmax,te[0])ymax=max(ymax,te[1])'''temp.append(te)'''没必要建图
ma=[[0]*(ymax+1) for i in range(xmax+1)]for i in range(n):ma[temp[i][0]][temp[i][1]]=temp[i][2]for i in ma:print(*i)
'''from collections import defaultdict
d=defaultdict(list)
for i in range(n):for j in range(n):if i!=j:x1,y1=temp[i][0],temp[i][1]x2,y2=temp[j][0],temp[j][1]if (x1-x2)**2+(y1-y2)**2<=temp[i][2]**2:d[i].append(j)
from collections import deque
def bfs(sta):q=deque([sta])l=1vis=[sta]while q:cur=q.popleft()for  nei in d[cur]:if nei not in vis:vis.append(nei)l+=1q.append(nei)return lmx=0
for i in range(n):mx=max(mx,bfs(i))
print(mx)

法2.Floyd 

用con存储了能否到达

预处理里面我们将可以直接到达的设为1

然后用floyd算法去遍历中介点,将可以通过中介点到达的设为1

最后我们只需要一行行地sum( )来统计每个个体所能到达的总数

注意:不能一列列遍历,因为我们con[ i ][ j ]存储的是从 i 到 j 的可能性,是有向的

n = int(input())def dis(a, b):  # a到b单向x1, y1, d1 = ax2, y2, d2 = bif (x1-x2)**2 + (y1-y2)**2 <= d1**2:return 1else:return 0te = []
for i in range(n):te.append(tuple(map(int, input().split())))# 用tuple才能在dis中解包con = [[0]*n for i in range(n)]
#预处理
for i in range(n):for j in range(n):con[i][j] = dis(te[i], te[j])#floyd 考虑中介点情况
for k in range(n):for i in range(n):for j in range(n):con[i][j] = con[i][j] or (con[i][k] and con[k][j])ans = 0
for i in range(n):vis = sum(con[i])  # 计算每头奶牛能通信的数量ans = max(ans, vis)  # 更新最大值print(ans)

相关文章:

  • 计算机组成与体系结构:缓存(Cache)
  • 嘻游电玩三端客户端部署实战:PC + Android + iOS 环境全覆盖教程
  • UOS+N 卡 + CUDA 环境下 X86 架构 DeepSeek 基于 vLLM 部署与 Dify 平台搭建指南
  • React 单一职责原则:优化组件设计与提高可维护性
  • Docker 快速入门教程
  • 使用Java调用TensorFlow与PyTorch模型:DJL框架的应用探索
  • 智能座舱测试内容与步骤
  • React18+ 项目搭建-从初始化、技术选型到开发部署的全流程规划
  • 【机器学习-线性回归-2】理解线性回归中的连续值与离散值
  • std::vector 自定义分配器
  • 禁止ubuntu自动更新
  • 实战华为1:1方式1 to 2 VLAN映射
  • PCB材料选择需求分析实例
  • [预备知识]3. 自动求导机制
  • Nginx:支持 HTTPS
  • 考研系列-计算机网络-第五章、传输层
  • 二叉树层序遍历技术解析与面试指南
  • 状态管理最佳实践:Riverpod响应式编程
  • Windows 同步-互锁变量访问
  • 【我的创作纪念日】 --- 与CSDN走过的第365天
  • 大家聊中国式现代化|周冯琦:转角见美,让“绿意”触手可及
  • 利用AI捏造“天价骨灰盒”谣言,内蒙古包头一网民被行政处罚
  • 70后供销合作总社理事会原副主任侯顺利任中国融通外部董事
  • 巴印在克什米尔发生交火
  • 由重商主义观察世界现代化历程
  • 国新办发布会丨2024年市监部门查办知产领域侵权行政违法案件4.4万件