123
返回列表 发新帖
楼主: henear
跳转到指定楼层
上一主题 下一主题
收起左侧

G挂

🔗
jackalsin 2019-2-5 05:11:58 | 只看该作者
全局:
henear 发表于 2019-2-4 11:20
嗯……一定有且只有一个信息源。
你可以定为A,也可以定为B……啥名都行,我跟面试官讨论了下他说你定吧 ...

如果已知消息源是A的话,可以从A开始建图,然后计算indegree,然后从A dfs,只寻找indegree为1的节点计入能够被砍掉的节点

之所以问A是不是消息源,主要想确定消息源是否能确定,
不然按照你的图,如果有M->E,如果消息源不确定,仅知道A知道这个消息,就不能确定消息源有没有给M传播消息,也就是无法得知E是否能够得到消息(不能确定indegree)
回复

使用道具 举报

🔗
nesenese 2019-2-5 06:16:14 | 只看该作者
全局:
第二问其实就是求A的每个child里面,哪个indegree为1的所有子node数最多,时间复杂度为O(E), 因为DFS只有在indegree为1的情况下才会继续计算该node的indegree为1的子node的数量,其只会被call一次,如果被call多次则与indegree=1相矛盾
回复

使用道具 举报

全局:
你给的例子里面 B和C都可以给E
在第一个条件下这个E点怎么办?没看懂
回复

使用道具 举报

全局:
杨超越 发表于 2019/02/04 10:03:38
不好意思 我没明白“如果每个人至多从一个人那里得到消息” 这是什么意思。。这个限制条件有和没有有什么区别吗。。?我没太明白 求解答

先算一下每个点indegree
然后挨个去掉和A相连的点
再用topo sort看看和A在同一级的点 也就是indegree为0 计算挨个可以去掉多少个
因为同一级的点无法从A得到消息
回复

使用道具 举报

🔗
杨超越 2019-2-5 09:00:47 | 只看该作者
全局:
pandami 发表于 2019-2-5 08:47
先算一下每个点indegree
然后挨个去掉和A相连的点
再用topo sort看看和A在同一级的点 也就是indegree为0  ...

谢谢!,这个题我觉得就是那个恶意软件传播的简化版。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表