两点之间的任意路径都可表示为  随便某一条路径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的更多相关文章

  1. Codeforces 617E:XOR and Favorite Number(莫队算法)

    http://codeforces.com/problemset/problem/617/E 题意:给出n个数,q个询问区间,问这个区间里面有多少个区间[i,j]可以使得ai^ai+1^...^aj ...

  2. Codeforces 242E:XOR on Segment(位上的线段树)

    http://codeforces.com/problemset/problem/242/E 题意:给出初始n个数,还有m个操作,操作一种是区间求和,一种是区间xor x. 思路:昨天比赛出的一道类似 ...

  3. Codeforces D546:Soldier and Number Game

    题目链接 输入t对数 a, b 求(b,a]内的每个数拆成素因子的个数和 这里每个数都可以写成素数的乘积,可以写成几个素数的和就有几个素因子,这里求的是(b,a]内的素因子和 思路: 素数的素因子个数 ...

  4. Codeforces 724 G Xor-matic Number of the Graph 线性基+DFS

    G. Xor-matic Number of the Graph http://codeforces.com/problemset/problem/724/G 题意:给你一张无向图.定义一个无序三元组 ...

  5. 动手写个数字输入框1:input[type=number]的遗憾

    前言  最近在用Polymer封装纯数字的输入框,开发过程中发现不少坑,也有很多值得研究的地方.本系列打算分4篇来叙述这段可歌可泣的踩坑经历: <动手写个数字输入框1:input[type=nu ...

  6. 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时出现如下报错 ...

  7. 第193天:js---Math+Error+Number+Object总结

    一.Math 随机选取 //随机选取 function getRandom (begin,end){ return Math.floor(Math.random()*(end-begin))+begi ...

  8. 【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 ...

  9. oracle创建jobs定时任务报错:PLS-00306: wrong number or types of arguments in call to 'JOB'

    原脚本: begin  sys.dbms_job.submit(job => job,                      what => 'xxx;',              ...

随机推荐

  1. Beta No.3

    今天遇到的困难: 组员对github极度的不适应 github的版本控制和协同化编程确实操作起来需要一定的熟练度,我们缺乏这种熟练度 Android Studio版本不一致项目难以打开的问题仍然无法解 ...

  2. 项目Beta冲刺预热

    Beta准备 1. 讨论组长是否重选的议题和结论. 经过讨论,我们认为,经过一段时间的磨合,现任组长是不需要更换的. 2. 下一阶段需要改进完善的功能. 增加关于征信的功能,贴近选题主题 美化界面,尽 ...

  3. mongodb 集群分片

    分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量,这 ...

  4. iOS开发-添加圆角效果高效实现

    圆角(RounderCorner)是一种很常见的视图效果,相比于直角,它更加柔和优美,易于接受.但很多人并不清楚如何设置圆角的正确方式和原理.设置圆角会带来一定的性能损耗,如何提高性能是另一个需要重点 ...

  5. 20145237 《Java程序设计》第10周学习总结

    20145237 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 •网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. •java.n ...

  6. 视图和URL配置

    视图和URL配置 实验简介 上一章里我们介绍了如何创建一个Django项目并启动Django的开发服务器.本章你将学到用Django创建动态网页的基本知识. 同时,也教会大家怎么在本地机器上建立一个独 ...

  7. Android实验报告

    实验名称:Android程序设计 实验时间:2017.5.24 实验人员:20162309邢天岳(结对同学20162313苑洪铭) 实验目的:使用android stuidio开发工具进行基本安卓软件 ...

  8. JAVA_SE基础——10.变量的作用域

    <pre name="code" class="java"> 上个月实在太忙了,从现在开始又可以静下心来写blog了. 变量的作用域指 可以使用此变 ...

  9. 构建自己的PHP框架--构建模版引擎(3)

    之前我们实现了最简单的echo命令的模版替换,就是将{{ $name }}这样一段内容替换成<?php echo $name ?>. 现在我们来说下其他的命令,先来回顾下之前的定义 输出变 ...

  10. 如何将portfolio产品图片上的悬停去掉?

    在Avada主题里,文章和portfolio的分类界面的图片,鼠标移入后都会出现这个东西 那么如何把它去掉,改为直接点击产品图片后进入产品详情页呢? 在theme option里搜索image rol ...