两点之间的任意路径都可表示为  随便某一条路径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. 项目Alpha冲刺Day4

    一.会议照片 二.项目进展 1.今日安排 学习熟悉前台框架且搭建前台页面框架. 2.问题困难 使用了前端的构建工具webpack,困难在于怎么使用gradle结合它连同后台框架中的配置一起打包,因为本 ...

  2. 弹幕视频播放app案例分析

    产品 哔哩哔哩动画 相对于其他视频播放软件来说,哔哩哔哩动画没有广告影响观看体验,而且内容更偏重于二次元,因此我更倾向于使用它. 第一部分 调研, 评测 #第一次上手体验 用起来还是比较方便,可以快速 ...

  3. vim配置强悍来袭

    vim   这个关键字,我不想再过多的解释,相信看到这里的同仁,对vim都有十七八分的理解,如果你还不知道vim是什么,自己找个黑屋子... 废话不多说,今天在这里主要说vim的,不带插件的配置,也就 ...

  4. Python多线程案例

    from time import ctime,sleep import threading def music(): for i in range(2): print ("I was lis ...

  5. DML数据操作语言之常用函数

    所谓函数,就是输入某一值,得到相应的输出结果的功能.相当于一个加工厂,给了原料,最终产出成品. 其中原料 就是参数(parameter). 产品 就是返回值. 函数大致可以分为以下五个种类: 算术函数 ...

  6. Java 多线程 从无到有

    个人总结:望对屏幕对面的您有所帮助 一. 线程概述 进程: 有独立的内存控件和系统资源 应用程序的执行实例 启动当前电脑任务管理器:taskmgr 进程是程序(任务)的执行过程,它持有资源(共享内存, ...

  7. thinkphp中ajax技术

    thinkphp可以直接返回json数据,json数据事可以跟前端的js通用的

  8. SQL Server 实现类似C#中 PadLeft功能

    USE [Test] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --@column 表示字段或者常量,@paddingChar 表示 补位 ...

  9. Python内置函数(12)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string  ...

  10. php最新版本配置mysqli

    从官网上下载php后(我下的是php7.2.3版本),本想做个mysql的连接,但是无论怎么配置mysqli扩展,发现mysqli都没法用. 从百度上搜的那些方法都没法用,发现都是一些在php.ini ...