Codeforces 39I Tram

题意

有向图一定存在包含点1在内的回路,出度至少为1,路径长度都为1,电车的速度也为1,电车从1出发。现在要在某些点安装摄像头,求最大的t,使每隔t时间(包含开始时即1必须装摄像头),电车一定会出现在某个摄像头下且其它时间电车不会出现在这些摄像头下,并输出这些摄像头的位置。

题解

t是一定存在的,最小为1。设t满足题目要求,那么此时从1出发到某点的所有路径长度(mod t)必是一个定值(否则因为出度至少为1,电车可以一直走那么电车一定可以走到某点,从1出发到该点的路径长度有(mod t)=0和(mod t)≠0的两种情况,那么无论在该点是否安装摄像头均不满足题意)。

设点集Si,从1出发到Si任意点的任意路径长度(mod t)=i,那么t最大时S0就是所求点集。S0,S1……St-1是没有交集的,且S=S0∪S1∪……∪St-1是从1出发能到达的所有点。

从1出发进行dfs并记录深度d[i]。如果只有树边存在那么t可以取到无限大,但因为必存在回路所以一定有非树边。对于非树边(u,v)且u,v∈S,要满足题解第一段的要求根据同余定理那么t只能取abs(d[u]+1-d[v])的约数,t取最大则t是所有abs(d[u]+1-d[v])的gcd。同时由于d[1]=0,即1∈S0,自动满足了在1安装摄像头的要求(安装摄像头的位置就是S0)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值