题目描述

给出一张 $n$ 个点 $m$ 条边的无向连通图,每条边的边权为1。对于每个点 $i$ ,问是否存在另一个点 $j$ ,使得对于任意一个不为 $i$ 或 $j$ 的点 $k$ ,$i$ 到 $k$ 的最短路与 $j$ 到 $k$ 的最短路之差为定值。求所有满足条件的点 $i$ 。

$n\le 100000,m\le 200000$


题解

结论题+Hash

结论:$i$ 满足条件,当且仅当满足三个条件之一:

1. 点 $i$ 的度数为1;
2. 点 $i$ 与一个度数为1的点相连;
3. 存在某个点 $j$ ,使得 $i$ 与 $j$  和所有除 $i,j$ 以外的点是否有边 相同。

证明参考 这里 。

对于条件1、2很容易判断。

对于3条件我们可以将所有与 $i$ 点相连的点Hash一下即可判断出 $i$ 与 $j$ 没有边的 $j$ 。

再把 $i$ 自己加进去Hash一下即可判断书 $i$ 与 $j$ 有边的 $j$ 。

其中Hash的模数要设成 $10^{18}$ 级别。

时间复杂度为使用map判断的 $O(m+n\log n)$

#include <map>
#include <cstdio>
#include <cstdlib>
#define N 100010
using namespace std;
typedef long long ll;
map<ll , int> mp1 , mp2;
int px[N << 1] , py[N << 1] , c[N] , flag[N] , ans[N];
ll v[N] , a[N] , b[N];
int main()
{srand(20011011);int T;scanf("%d" , &T);while(T -- ){mp1.clear() , mp2.clear();int n , m , i , tot = 0;scanf("%d%d" , &n , &m);for(i = 1 ; i <= n ; i ++ ) v[i] = a[i] = ((ll)rand() << 45) + ((ll)rand() << 30) + (rand() << 15) + rand() , flag[i] = c[i] = b[i] = 0;for(i = 1 ; i <= m ; i ++ ) scanf("%d%d" , &px[i] , &py[i]) , c[px[i]] ++ , c[py[i]] ++ ;for(i = 1 ; i <= m ; i ++ ){if(c[px[i]] == 1) flag[py[i]] = 1;if(c[py[i]] == 1) flag[px[i]] = 1;a[px[i]] ^= v[py[i]] , b[px[i]] ^= v[py[i]];a[py[i]] ^= v[px[i]] , b[py[i]] ^= v[px[i]];}for(i = 1 ; i <= n ; i ++ ) mp1[a[i]] ++ , mp2[b[i]] ++ ;for(i = 1 ; i <= n ; i ++ )if(c[i] == 1 || flag[i] || mp1[a[i]] > 1 || mp2[b[i]] > 1)ans[++tot] = i;printf("%d\n" , tot);for(i = 1 ; i <= tot ; i ++ ) printf("%d " , ans[i]);puts("");}return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/8301049.html

【uoj#175】新年的网警 结论题+Hash相关推荐

  1. uoj 175. 新年的网警

    题意: 在这新年的第一天,猴族首领猴腮雷打算来整治一下网络风气.这时,他听说在一个叫做 Universal OJ 用户群 的 QQ 群中有人在散播(开)谣言(车),于是他就派了一群网警把这个用户群里的 ...

  2. 【uoj#180】[UR #12]实验室外的攻防战 结论题+树状数组

    题目描述 给出两个长度为 $n$ 的排列 $A$ 和 $B$ ,如果 $A_i>A_{i+1}$ 则可以交换 $A_i$ 和 $A_{i+1}$ .问是否能将 $A$ 交换成 $B$ . 输入 ...

  3. 数字迷阵(矩阵快速幂+结论题)

    数字迷阵(矩阵快速幂+结论题) 题目描述 小可可参观科学博物馆时,看到一件藏品,上面有密密麻麻的数字,如下所示:    1   2   3   5    8    13   21   34   55 ...

  4. 优盘中发现计算机病毒怎么办,【网警课堂】教你解决U盘使用中出现的各种问题!...

    原标题:[网警课堂]教你解决U盘使用中出现的各种问题! 在使用U盘的时候,我们经常会遇到各种问题.当我们遇到各种U盘问题时,该怎么办呢?今天文哥给大家分享一些解决U盘使用中出现相关问题的解决方法. 一 ...

  5. CodeForces - 1498E Two Houses(交互+图论,结论题)

    题目链接:点击查看 题目大意:给出一个由 nnn 个点组成的竞赛图,现在要求出一组点对 (A,B)(A,B)(A,B),满足两个点可以互达,且入度的绝对值之差最大 题目分析:结论题,先放结论: 结论: ...

  6. agc015F - Kenus the Ancient Greek(结论题)

    题意 题目链接 $Q$组询问,每次给出$[x, y]$,定义$f(x, y)$为计算$(x, y)$的最大公约数需要的步数,设$i \leqslant x, j \leqslant y$,求$max( ...

  7. 计算机网络日志查询,系统资源管理_百络网警内网管理软件_电脑配置统计,系统日志,日志查询...

    管理作用 管理者可以使用百络网警内网gua灵活查询的分类统计网内计算机的硬件和软件信息,为IT资产管理提供方便和决策支持.也可以让IT管理者从多个角度来了解网络内每台计算机的全面的日志信息,为故障排除 ...

  8. SegmentFault无法访问,因出现违规内容被网警要求停机!

    作者:Hollis 公众号:Hollis 近日,有不少网友发现,开发者社区SegmentFault突然无法访问,用户进入网站会跳转到固定页面,并提示"维护中". 据官方微博发布公 ...

  9. 被江苏网警点名后 咪蒙发道歉信:公众号停更2个月 微博永久关停

    在"寒门状元之死"文章刷屏被质疑造假后,"才华有限青年"团队作出了回应,但是显然回应的一切并不能说服围观者们,甚至引起网友们更大的愤怒,被指"毫无诚意 ...

最新文章

  1. cmd命令控制台窗口一闪就消失解决办法
  2. 二阶系统响应指标图_15. 闭环系统的频域性能指标
  3. 函数计算自动化运维实战1 -- 定时任务
  4. ECSHOP 如何去掉配送区域
  5. 调用高德逆地理接口_地理编码与逆地理编码
  6. 深入Istio架构和功能--理解数据面/控制面/流量管理/安全/可观察性
  7. 困惑我半年的一个问题终于解决了
  8. 金融行业的JAVA软件开发
  9. 典型相关分析相关资料
  10. 计算机上无线网络开关在哪里,联想笔记本无线网络开关,教您联想笔记本无线网络开关在哪...
  11. 全球及中国EDM放电加工机行业盈利投资分析及运营现状调研报告2021-2027年版
  12. http协议get请求方法和post请求方法的区别
  13. 构建优秀产品信息架构的三要素
  14. Python编程基础——编程环境准备工作
  15. uni-app小程序到微信发布踩的坑
  16. 基于三维GIS技术的智慧物流园区建设
  17. 计算鬼成像学习笔记二:二阶关联函数探究
  18. 云计算领域“集装箱”
  19. 环环相扣,VR硬件技术突破的春天还有点远
  20. eb8000软件怎样上传_eb8000程序上传与

热门文章

  1. CMMI资质是什么?看完你就懂了
  2. 正方教务系统自动评分
  3. html表格边框设置单线,border-collapse把table边框的样式设置成单线
  4. html js 回到顶部,简单的返回顶部的js代码
  5. 窗外的夜雨心中的思雨
  6. 这三大领域10年内将被人工智能和大数据重塑
  7. centos7 网卡配置vlan_centos7 配置vlan trunk口
  8. 转:UML 太极建模口诀(建模助手)
  9. python SIFT特征匹配
  10. Databus架构分析