Codeforces 553C Love Triangles(图论)
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;
}
Codeforces 553C Love Triangles(图论)的更多相关文章
- 【codeforces 553C】Love Triangles
[题目链接]:http://codeforces.com/problemset/problem/553/C [题意] 给你n个点,m条边; 每种边有2两种类型; 让你补充剩下的边,构造一个完全图; 使 ...
- Codeforces 15 E. Triangles
http://codeforces.com/problemset/problem/15/E 题意: 从H点走下去,再走回H点,不能走重复路径,且路径不能把黑色三角形包围的方案数 中间的黑色三角形把整张 ...
- CodeForces - 13D :Triangles(向量法:问多少个蓝点三角形内部无红点)
Little Petya likes to draw. He drew N red and M blue points on the plane in such a way that no three ...
- 【codeforces 229C】Triangles
[题目链接]:http://codeforces.com/problemset/problem/229/C [题意] 给你一张完全图; 然后1个人从中选择m条边; 然后另外一个人从中选择剩余的n*(n ...
- Codeforces 553D Nudist Beach(图论,贪心)
Solution: 假设已经选了所有的点. 如果从中删掉一个点,那么其它所有点的分值只可能减少或者不变. 如果要使若干步删除后最小的分值变大,那么删掉的点集中肯定要包含当前分值最小的点. 所以每次删掉 ...
- [CodeForces]CodeForces - 1025F Disjoint Triangles
题意: 给出平面上n个点,问能在其中选出6个点,组成两个三角形,使得其互不相交 问有多少种选法 大致思路 考虑枚举一条直线,将所有得点分为左右两部分,其中有两个点在直线上, 以这两个点为顶点,分别统 ...
- CodeForces 52B Right Triangles 矩阵上的计数
题目链接:点击打开链接 题意: 问有多少个与矩阵边平行的直角三角形.且三角形的3个顶点都是* 对于 L形 或者_| 形的三角形.我们仅仅须要知道在_ 上方有多少个*就可以,下底边则任取2个 所以用l[ ...
- Codeforces 1163E Magical Permutation [线性基,构造]
codeforces 思路 我顺着图论的标签点进去的,却没想到-- 可以发现排列内每一个数都是集合里的数异或出来的. 考虑答案的上界是多少.如果能用小于\(2^k\)的数构造出\([0,2^k-1]\ ...
- Codeforces Gym 100015F Fighting for Triangles 状压DP
Fighting for Triangles 题目连接: http://codeforces.com/gym/100015/attachments Description Andy and Ralph ...
随机推荐
- HW4.21
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- 395. Coins in a Line II
最后更新 这个题做得也不好,dp[n]尝试写了几下,不太对. 应该是类似于gem theory的题. 当只有1个硬币剩下的时候直接拿走,不BB. 剩俩的时候也都拿了.. dp[n]表示剩下多少个硬币. ...
- 第一次JAVA基础考试后的反思
今天进行了第一次JAVA基础考试,考查了课本上前面三章和方法的知识,基本没有涉及到数组.通过这次的考试,暴露了自己在学习中的很多问题. 机试题是编写一个学员状态转换器,主要运用的是选择语句和方法,而没 ...
- Staitic(静态) 相关知识点介绍
一.什么是 Static? Static 关键字:表明一个成员变量或者是成员方法可以在没有所属的类的实例的情况下直接被访问 当成员被静态修饰后,就多了一个调用方式,除了可被对象调用外还可以直接被类名调 ...
- java集合类之TreeMap
转自:http://blog.csdn.net/chenssy/article/details/26668941 TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的 ...
- Oracle 数据库用户管理
Oracle 数据库用户管理 Oracle 权限设置 一.权限分类: 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限 ...
- [CSS] DOM Hierarchy Pseudo Classes :first-child :last-child :nth-child (demystified)
DOM hierarchy pseudo-classes allow you to style specific elements based on where they fall in the hi ...
- Java GC 概念摘要
很长时间,我想Java的GC做一个小小的总结,他有没有时间.根据最近看了java paper向上java gc文章,我觉得好,读读.顺便说一下,总结下. java paper的GC文章地址,里面有非常 ...
- fork和exec函数
#include<unistd.h> pid_t fork(void); 返回:在子进程中为0,在父进程中为子进程IO,若出错则为- fork最困难之处在于调用它一次,它却返回两次.它在调 ...
- xshell十大技巧
xshell是我用过的最好用的ssh客户端工具,没有之一.这个软件完全免费,简单易用,可以满足通过ssh管理linux vps所有需要,唯一遗憾的是没有官方中文版. 警告:不要下载所谓的汉化版,可能有 ...