找到一棵dfs搜索树,给每条非树边一个随机非0权值,每条树边为所有经过它的树边的权值的异或。

那么有2种情况是合法的:

1.一条边权值为0,一条边权值非0。

2.两条边异或和为0。

排序后统计即可,时间复杂度$O(m\log m)$。

#include<cstdio>
#include<algorithm>
const int N=2010,M=100010;
int n,m,i,j,e[M][2],g[N],v[M<<1],w[M<<1],nxt[M<<1],ed,d[N],dfn,f[N],c0,c1;
unsigned long long seed,h[M],tag[N],ans;
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
inline void add(int x,int y,int z){v[++ed]=y;w[ed]=z;nxt[ed]=g[x];g[x]=ed;}
void dfs(int x){d[x]=++dfn;for(int i=g[x];i;i=nxt[i])if(w[i]!=f[x]){int y=v[i];if(d[y]&&d[y]<=d[x]){for(seed=seed*233+17;!seed;seed=seed*233+17);h[w[i]]=seed,tag[x]^=seed,tag[y]^=seed;}else if(!d[y])f[y]=w[i],dfs(y);}
}
void cal(int x){for(int i=g[x];i;i=nxt[i])if(f[v[i]]==w[i]&&d[v[i]]>d[x])cal(v[i]),tag[x]^=tag[v[i]];h[f[x]]=tag[x];
}
int main(){read(n),read(m);for(i=1;i<=m;i++)read(e[i][0]),read(e[i][1]),add(e[i][0],e[i][1],i),add(e[i][1],e[i][0],i);dfs(1),cal(1);for(i=1;i<=m;i++)if(h[i])c1++;else c0++;ans=1ULL*c0*c1;std::sort(h+1,h+m+1);for(i=1;i<=m;i=j){for(j=i;j<=m&&h[i]==h[j];j++);ans+=1ULL*(j-i)*(j-i-1)/2;}return printf("%llu",ans),0;
}

  

BZOJ1315 : Ural1557Network Attack相关推荐

  1. Pig变飞机?AI为什么这么蠢 | Adversarial Attack

    整理 | Jane 责编 | Jane 出品 | AI科技大本营(公众号id:rgznai100) [编者按]这篇文章的起意有两点:一是由刚刚过去的 315 打假日,智能语音机器人在过去一年拨出的超 ...

  2. Attack on Alpha-Zet

    题目链接:https://nanti.jisuanke.com/t/28852 7998: Attack on Alpha-Zet 时间限制: 1 Sec  内存限制: 512 MB 提交: 28   ...

  3. HTTP Slow Attack测试工具SlowHTTPTest

    HTTP Slow Attack测试工具SlowHTTPTest Slow Attack是HTTP常见的一种拒绝服务攻击方式.它通过消耗服务器的系统资源和连接数,导致Web服务器无法正常工作.常见的攻 ...

  4. How to attack a windows domain

    How to attack a windows domain 分类: 网络技术2013-06-24 16:1919人阅读评论(0)收藏举报 I recommend double clicking th ...

  5. linux symbolic link attack tutorial

    Yaseng · 2015/01/27 10:01 0×00 前言 Linux作为应用最广泛的开源系统,其中独特的文件系统可以算是支撑Linux强大功能 的核心组件之一,而在文件系统中,符号链接(sy ...

  6. SYN攻击SYN Attack

    SYN攻击SYN Attack SYN Attack是一种DOS攻击方式.它利用的是TCP协议的漏洞,攻击目标,使其不在响应网络请求.在TCP协议中,需要三次握手,才能建立TCP连接.在握手过程中,客 ...

  7. 人机接口设备攻击(HID Attack)

    人机接口设备攻击(HID Attack) HID Attack是最近几年流行的一类攻击方式.HID是Human Interface Device的缩写,意思是人机接口设备.它是对鼠标.键盘.游戏手柄这 ...

  8. Forbidden Attack:7万台web服务器陷入被攻击的险境

    一些受VISA HTTPS保护的站点,因为存在漏洞容易受到Forbidden攻击,有将近70,000台服务器处于危险之中. 一种被称为"Forbidden攻击"的新攻击技术揭露许多 ...

  9. 数字货币 区块链 双花攻击 Double Spend Attack 简介

    前段时间,比特黄金BTG遭受双花攻击,一名恶意矿工临时控制了BTG区块链,在向交易所充值后迅速提币,再逆转区块,成功实施双花攻击. 比特黄金BTG创始人廖翔回应说:"已与各交易所紧密合作,通 ...

最新文章

  1. java redis 下载_redis Java源代码 redis.rar - 下载 - 搜珍网
  2. activity在屏幕旋转时的生命周期
  3. spring+springmvc+maven+mongodb
  4. ubuntu16.04下面的redis desktop manger的使用
  5. kafka部分重要参数配置-broker端参数
  6. Android去掉listView,gridView等系统自带阴影
  7. nginx redis mysql_Nginx + Lua + Kafka + Redis + Mysql
  8. 贷后风控中逾期案件差异化的分配逻辑
  9. 蓝桥杯2020年第十一届Python省赛第五题-排序
  10. RTX2012概述-1
  11. Heartbeat超时值
  12. modelsim 无objects窗口 的解决方法
  13. 高数 04.03分部积分法
  14. 毕业设计 - 银行柜员业务绩效考核系统的设计与实现【源码+论文】
  15. C++11之防止类型收窄
  16. 使用Delphi进行相机访问
  17. 【高等数学】加减关系下可以用等价无穷小替换的情况
  18. SASS Or SCSS
  19. mysql 显示行号
  20. Elementary effect

热门文章

  1. static构造函数的运行
  2. PHP安装与使用VLD查看opcode代码【PHP安装第三方扩展的方法】
  3. php连接Mysql
  4. 配置MySQL主从复制
  5. C++中关键字volatile和mutable用法
  6. xhr请求python_python爬取boss直聘职位数据,并保存到本地
  7. 华南理工大学计算机应用基础随堂作业,华南理工大学计算机应用基础随堂练习题目及答案...
  8. 生成窄带信号_房间冲激响应RIR原理与模拟生成方法
  9. mysql raw_Oracle中的Raw类型解释
  10. 【基础知识】如何在浏览器中查找元素属性节点