1034_Graph_Dfs_

这篇博客讨论了一个关于图的连通分图问题,作者通过深度优先搜索(DFS)算法来统计每个连通分图内的通话总量。强调了在遍历map时的注意事项,如不能使用`!it==map.end()`来判断,计数不应使用`count`,以及题目理解的重要性。博主分享了自己的解决方案,包括选择的数据结构和遍历方法,并提到了柳神的优化思路,即利用map的自动升序特性进行输出。
摘要由CSDN通过智能技术生成


1.遍历map查找的时候, 不能用!it==map.end()来判断,只能== 或者 !=
2.计数不要用count,会有歧义
3.题目没读清楚

,最后输出需要按照字母表排序
4.坑点:1000条通话记录,不是1000个人

我自己的思路:
明确范围:这是一个连通分图的问题
解决的算法:简单的dfs,递归统计一个连通的通话总量
            对于通话总量:每一层返回自己连别人数量 + 连上的人的通话数量
                          这个值,只有在一个连通分图内,所有的人都统计完了,才可以知道终值
            对于head的选择:需要实时比较,用reference传在函数里面,一个人的通话时间 = a连b+b连a
             每次做完一个人,立马和传过来的single_max比较
选取的数据结构:1.对于名字,需要有一个固定的编号,方便我们处理,所以这里我选取了map<string,int>,保存这个值,并且不能重复
                2.对于编号,也需要保存name,因为输出的时候,得到的结果是编号,这里最好选取 string name[2001]
                3.对于图,我选取了二维数组,注意t[a][b] != t[b][a]
                    遍历的条件&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值