思路:

题目倒是没啥好说的,就是注意memset的效率问题。如果循环多次调用memset去初始化一个比较大的数组,那就会很费时间。就是因为这个被hack了。:(

实现:

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll; const int MOD = ;
const int MAXN = ; vector<int> G[MAXN];
int col[MAXN];
int n, m;
ll c1 = , c2 = , bin[MAXN]; bool dfs(int v, int c)
{
col[v] = c;
if (c == ) c1++;
else c2++;
for (int i = ; i < G[v].size(); i++)
{
if (col[G[v][i]] == c) return false;
if (col[G[v][i]] == && !dfs(G[v][i], - c)) return false;
}
return true;
} int main()
{
bin[] = ;
for (int i = ; i <= ; i++) bin[i] = bin[i - ] * % MOD;
int t, v, u;
scanf("%d", &t);
while (t--)
{
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++) { G[i].clear(); col[i] = ; }
for (int i = ; i < m; i++)
{
scanf("%d%d", &u, &v);
G[u].push_back(v);
G[v].push_back(u);
}
bool flg = true;
ll ans = ;
for (int i = ; i <= n; i++)
{
if (col[i]) continue;
ll tmp = ; c1 = c2 = ;
if (!dfs(i, )) { flg = false; break; }
tmp = (bin[c1] + bin[c2]) % MOD;
ans = ans * tmp % MOD;
}
if (!flg) puts("");
else printf("%lld\n", ans);
}
return ;
}

最新文章

  1. Redis安装及实现session共享
  2. How do I see all foreign keys to a table or column?
  3. BZOJ 2882 &amp; 后缀数组的傻逼实现
  4. SQL语句创建表和数据库
  5. PC/UVa 题号: 110105/10267 Graphical Editor (图形化编辑器)题解
  6. .PIG File
  7. LibLinear(SVM包)的MATLAB安装
  8. STM32启动文件的选择
  9. JavaScript功能规划的基本语法总结
  10. nodejs 代码设计模式1:同步函数变异步
  11. SQLAlchemy基础操作一
  12. JVM GC杂谈之理论入门
  13. Linux_查找文件
  14. PHP+MySql+Bootstrap实现用户界面数据的删除、修改与批量选择删除——实例操作
  15. js——事件冒泡与捕获小例子
  16. adb 常用命名
  17. win7 系统中的加密文件打不开了
  18. 手工sql注入简单入门
  19. APP强制退出
  20. ruby楼层排序问题

热门文章

  1. Autoware docker 环境安装
  2. c++之拷贝构造函数详解
  3. MTK OTG 流程
  4. kafka数据可靠性深度解读【转】
  5. Sudo环境变量继承
  6. org.apache.catalina.LifecycleException报错解决方法
  7. Fitnesse-The Slim Tables
  8. Angular6在自定义指令中使用@HostBingDing() 和@HostListener()
  9. E20190215-mt
  10. 如何在html中引入jsx文件