Solution:

  比较好的图论的题。

要做这一题,首先要分析love关系和hate关系中,love关系具有传递性。更关键的一点,hate关系是不能成奇环的。

看到没有奇环很自然想到二分图的特性。

那么当前的任务是先二分染色,判断给定的边是否有冲突,并且缩点。

假设缩完点后图中只身下k个点。这k个点的hate关系满足二分图的关系。

那么计算组合数,共2^(k-1)种方法。

#include <bits/stdc++.h>

using namespace std;
const int N = ;
typedef pair<int, int> ii;
int vis[N], n, m , flag , s;
vector<ii> E[N]; void dfs (int x, int k)
{
vis[x] = k;
--s;
for (auto &i : E[x]) {
if (!~vis[i.first]) {
dfs (i.first, k ^ i.second);
} else {
if ( (vis[x]^vis[i.first]) != i.second) {
flag = ;
return ;
}
}
if (flag) return;
}
} int main()
{
memset (vis, -, sizeof vis);
ios::sync_with_stdio ( );
cin >> n >> m;
s = n;
for ( int i = , u, v, c; i <= m; ++i ) {
cin >> u >> v >> c;
E[u].push_back (make_pair (v, c ^ ) );
E[v].push_back (make_pair (u, c ^ ) );
}
for (int i = ; i <= n; ++i) {
if (!~vis[i] && !E[i].empty() ) {
++s;
dfs (i, );
}
if (flag) {
cout << << endl;
return ;
}
}
long long ans = , p = ;
--s;
while ( s > ) {
if ( s & ) ans = ans * p % ;
p = ( p * p ) % ;
s >>= ;
}
cout << ans << endl;
}

最新文章

  1. JavaMail简单版实验测试
  2. 关键字sizeof---常年被人误认为函数
  3. Python字符串、元组、列表、字典互相转换的方法
  4. GC学习笔记
  5. js函数——倒计时模块+无缝滚动
  6. Article Master Data Deviation
  7. iOS中设置导航栏标题的字体颜色和大小
  8. ucore文件系统详解
  9. Java-IO之超类InputStream
  10. jQuery.Ajax IE8,9 无效(CORS跨域)
  11. react-router(v4) 路由跳转后返回页面顶部问题
  12. java连接数据库读取数据出现乱码
  13. openstack--1--基础环境搭建
  14. CSS GRID ESSENTIALS
  15. 『PyTorch』第十一弹_torch.optim优化器
  16. Python 个人的失误记录之str.replace
  17. 超酷的响应式dribbble设计作品瀑布流布局效果
  18. SQL----&gt;mySQl卸载for mac
  19. redis应用场景:实现简单计数器-防止刷单
  20. C语言中的序列点

热门文章

  1. Install MongoDB on Windows
  2. CUDA8.0+VS2013的安装和配置
  3. Android开发之50个常见实用技巧——活用布局
  4. HDU 2876 Ellipse, again and again
  5. ADO.NET与Oracle(一):获取多行记录集
  6. careercup-数组和字符串1.4
  7. PHP安全设置
  8. jquery 提示信息显示后自动消失的具体实现
  9. 自己写的demo---声明异常同时处理异常,或者继续抛出异常
  10. &lt;script runat=server&gt;、&lt;%%&gt;和&lt;%#%&gt;的区别