CodeForces - 724G:Xor-matic Number of the Graph
两点之间的任意路径都可表示为 随便某一条路径xor任何多个环,
然后可以用线性基来做,这样不会重复的,
另外必须一位一位的处理,xor是不满足结合律的
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<vector>
#define MOD 1000000007
#define MAXN 100000+10
#define ll long long
#define pb push_back
#define ft first
#define sc second
#define mp make_pair
#define pil pair<int,ll>
using namespace std;
int n,m;
vector<pil> G[MAXN];
ll d[MAXN];
int pw[MAXN];
vector<ll> vs;
vector<int> node;
void dfs(int x,ll c){
d[x]=c;node.pb(x);
for(int i=;i<G[x].size();i++){
pil& t=G[x][i];
if(-!=d[t.ft]){vs.pb(d[x]^d[t.ft]^t.sc);}
else{dfs(t.ft,c^t.sc);}
}
}
ll a[];
ll ans;
ll solve(){
memset(a,,sizeof(a));
int cnt=;ll ret=;
for(int i=;i<vs.size();i++){
ll v=vs[i];
if(!v)continue;
for(int j=;j>=;j--){
if((v>>j)&){
if(!a[j]){
cnt++;
a[j]=v;
break;
}
else{
v^=a[j];
}
}
}
}
for(int k=;k<=;k++){
int t[]={};
for(int i=;i<node.size();i++){
t[(d[node[i]]>>k)&]++;
}
bool flag=;
for(int i=;i<=;i++){
if((a[i]>>k)&){
flag=;break;
}
}
ll tmp=;
if(!flag){
tmp+=(1LL*t[]*t[]%MOD*pw[cnt]%MOD);
tmp%=MOD;
tmp*=pw[k];
tmp%=MOD;
}
else{
tmp+=(1LL*t[]*(t[]-))/+(1LL*t[]*(t[]-))/+(1LL*t[]*t[]%MOD);
tmp%=MOD;
if(cnt)tmp*=pw[cnt-],tmp%=MOD;
tmp*=pw[k];
tmp%=MOD;
}
ret+=tmp;
ret%=MOD;
}
return ret;
}
int main()
{
// freopen("data.in","r",stdin);
pw[]=;
for(int i=;i<=;i++){
pw[i]=pw[i-]*%MOD;
}
scanf("%d%d",&n,&m);
int x,y;ll w;
for(int i=;i<=m;i++){
scanf("%d%d%lld",&x,&y,&w);
G[x].pb(mp(y,w));G[y].pb(mp(x,w));
}
memset(d,-,sizeof(d));
for(int i=;i<=n;i++){
if(-==d[i]){
vs.clear(),node.clear();
dfs(i,);
ans+=solve();
ans%=MOD;
}
}
printf("%lld\n",ans);
return ;
}
CodeForces - 724G:Xor-matic Number of the Graph的更多相关文章
- Codeforces 617E:XOR and Favorite Number(莫队算法)
http://codeforces.com/problemset/problem/617/E 题意:给出n个数,q个询问区间,问这个区间里面有多少个区间[i,j]可以使得ai^ai+1^...^aj ...
- Codeforces 242E:XOR on Segment(位上的线段树)
http://codeforces.com/problemset/problem/242/E 题意:给出初始n个数,还有m个操作,操作一种是区间求和,一种是区间xor x. 思路:昨天比赛出的一道类似 ...
- Codeforces D546:Soldier and Number Game
题目链接 输入t对数 a, b 求(b,a]内的每个数拆成素因子的个数和 这里每个数都可以写成素数的乘积,可以写成几个素数的和就有几个素因子,这里求的是(b,a]内的素因子和 思路: 素数的素因子个数 ...
- Codeforces 724 G Xor-matic Number of the Graph 线性基+DFS
G. Xor-matic Number of the Graph http://codeforces.com/problemset/problem/724/G 题意:给你一张无向图.定义一个无序三元组 ...
- 动手写个数字输入框1:input[type=number]的遗憾
前言 最近在用Polymer封装纯数字的输入框,开发过程中发现不少坑,也有很多值得研究的地方.本系列打算分4篇来叙述这段可歌可泣的踩坑经历: <动手写个数字输入框1:input[type=nu ...
- xtrabackup备份MySQL报错:InnoDB: Error number 24 means 'Too many open files'
xtrabackup备份MySQL报错:InnoDB: Error number 24 means 'Too many open files' 1.使用xtrabackup备份MySQL时出现如下报错 ...
- 第193天:js---Math+Error+Number+Object总结
一.Math 随机选取 //随机选取 function getRandom (begin,end){ return Math.floor(Math.random()*(end-begin))+begi ...
- 【POI】导出xls文件报错:The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook
使用POI导出xls文件,由于数据过多,导致导出xls报错如下: The maximum number of cell styles was exceeded. You can define up t ...
- oracle创建jobs定时任务报错:PLS-00306: wrong number or types of arguments in call to 'JOB'
原脚本: begin sys.dbms_job.submit(job => job, what => 'xxx;', ...
随机推荐
- C语言助教批改
作业批改 每次作业批改后写一篇作业点评,助教轮流写作业总结.(总结分工老师安排). 每个助教点评自己负责的同学博客,点评要详细,不能只有一句话. 有比较优秀博客请或典型问题推荐到qq群,并发给写总结助 ...
- 团队作业4——第一次项目冲刺(Alpha版本)11.14
a. 提供当天站立式会议照片一张 举行站立式会议,讨论项目安排: PM对整个项目的需求进行讲解: 全队对整个项目的细节进行沟通: 对整个项目的开发计划进行分析,分配每天的任务: 统一确定项目的开发环境 ...
- 201421123042 《Java程序设计》第12周
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...
- 服务器数据恢复_Linux网站服务器故障数据恢复案例
[数据恢复故障描述] 一台linux网站服务器,DELL R200,管理约50个左右网站,使用一块SATA 160GB硬盘.正常使用中突然宕机,尝试再次启动失败,将硬盘拆下检测时发现存在约100个坏扇 ...
- 技术文档分享_linux中生成考核用的GPT分区表结构修复
注:历史版本,后期改用python实现了 实验一: 目的:用于生成大量模拟破坏GPT分区结构案例,并生成唯一方式修复后的评判方法.故障:在一个完整的GPT分区磁盘上,丢失了GPT主分区表,或备份分区表 ...
- STM32F4系列单片机上使用CUBE配置MBEDTLS实现pem格式公钥导入
|版权声明:本文为博主原创文章,未经博主允许不得转载. 最近尝试在STM32F4下用MBEDTLS实现了公钥导入(我使用的是ECC加密),整个过程使用起来比较简单. 首先,STM32F4系列CUBE里 ...
- python django的ManyToMany简述
Django的多对多关系 在Django的关系中,有一对一,一对多,多对多的关系 我们这里谈的是多对多的关系 ==我们首先来设计一个用于示例的表结构== # -*- coding: utf-8 -*- ...
- AutoCAD中的扩展字典及扩展记录(C#)
在学习CAD扩展记录的过程中,遇到了一些问题,也积累了一些经验,现在给大家分享一些我的学习心得.在学习扩展字典之前需要读者了解cad的组码,也就是DxfCode.感兴趣的也可以了解一下扩展数据的相关内 ...
- JMeter入门(01)概念和样例
一.概念 JMeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台,实现了许多和互联网相关的网络测试组件,同时还保留着很强的扩展性. JMeter可以用来测试诸如:静态文件,Java Ser ...
- Properties文件读写问题
项目需要在Properties配置文件中设置一些配置属性,其中包含一些中文属性.经过一上午的奋斗终于圆满解决问题. 读取Properties文件所有属性 Map<String, String&g ...