【HDU4751】Divide Groups
题目大意:给定 N 个点和一些有向边,求是否能够将这个有向图的点分成两个集合,使得同一个集合内的任意两个点都有双向边联通。
题解:反向思考,对于没有双向边的两个点一定不能在同一个集合中。因此,构建一个图,若两点之间有边,则表示这两个点不能在同一个集合中。进行二分图染色判定即可,若是二分图,则满足条件,反之则不满足。
代码如下
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
const int maxn=110;
int n;bool mp[maxn][maxn];
vector<int> G[maxn];
int cor[maxn];
void read_and_parse(){
memset(mp,0,sizeof(mp));
memset(cor,0,sizeof(cor));
for(int i=1;i<=n;i++)G[i].clear();
for(int i=1,to;i<=n;i++)while(scanf("%d",&to)&&to)mp[i][to]=1;
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(i!=j&&(!mp[i][j]||!mp[j][i]))G[i].pb(j);
}
bool dfs(int u,int c){
cor[u]=c;
for(auto v:G[u]){
if(cor[v]==c)return 0;
if(!cor[v]&&!dfs(v,3-c))return 0;
}
return 1;
}
void solve(){
for(int i=1;i<=n;i++)if(!cor[i]&&!dfs(i,1))return (void)puts("NO");
puts("YES");
}
int main(){
while(scanf("%d",&n)!=EOF){
read_and_parse();
solve();
}
return 0;
}
【HDU4751】Divide Groups的更多相关文章
- 【leetcode】893. Groups of Special-Equivalent Strings
Algorithm [leetcode]893. Groups of Special-Equivalent Strings https://leetcode.com/problems/groups-o ...
- 【Leetcode】 - Divide Two Integers 位运算实现整数除法
实现两个整数的除法,不许用乘法.除法和求模.题目被贴上了BinarySearch,但我没理解为什么会和BinarySearch有关系.我想的方法也和BS一点关系都没有. 很早以前我就猜想,整数的乘法是 ...
- 【leetcode】Divide Two Integers (middle)☆
Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...
- 【Leetcode】【Medium】Divide Two Integers
Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...
- 【Leetcode】Divide Two Integers
Divide two integers without using multiplication, division and mod operator. class Solution { public ...
- 【Leetcode_easy】893. Groups of Special-Equivalent Strings
problem 893. Groups of Special-Equivalent Strings 题意: 感觉参考代码也是有点问题的... 参考 1. Leetcode_easy_893. Grou ...
- 【LeetCode】893. Groups of Special-Equivalent Strings 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【HDU4301】Divide Chocolate
题意 有一块n*2的巧克力,将它分成k块,问有多少种方法. 分析 emmm是dp没错了. 最容易想到的状态定义是f[i][j],意思是前i行,分成j块的方案数.但是发现没法转移.(后面会说一下为什么· ...
- 【基数排序】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) C. Jon Snow and his Favourite Number
发现值域很小,而且怎么异或都不会超过1023……然后可以使用类似基数排序的思想,每次扫一遍就行了. 复杂度O(k*1024). #include<cstdio> #include<c ...
随机推荐
- Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap
ionic build Android后的报错问题 ionic 升级了splashscreen和statusbar的插件后,执行ionic build android会一直报打包错误.原因是过低的An ...
- C++ 11 Lambda表达式
C++11的一大亮点就是引入了Lambda表达式.利用Lambda表达式,可以方便的定义和创建匿名函数.对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多 ...
- Oracle 12c用户和安全管理
前言: Oracle 12c的多租户(multitenant)环境与SQL Server的架构非常相似,CDB$ROOT类似于master.PDB$SEED类似于model.各个pluggable d ...
- python3 多线程的使用
示例1: import threadingfrom time import sleep class forThread(threading.Thread): def __init__(self, ev ...
- isinstance_issubclass
isinstance和issubclass分别是检验是不是对象是不是类的实例化,和子类是不是这个父类的子类 class A:pass class B(A):pass a = A() print(isi ...
- Spring的单例模式底层实现
http://blog.csdn.net/cs408/article/details/48982085
- webApi 验证basic-authentication认证的资源的各种语言的实现
HTTP Basic authentication (BA) 是一个基于http请求的,简单验证.详细资料:https://en.wikipedia.org/wiki/Basic_access_aut ...
- vue-router query 传对象需要JSON.stringify()转化
先说一下场景-微信公众号网页开发中,一个文章列表点击跳转详情页.代码如下 1 2 3 this.$router.push({path: '/wx/detail', query: {res: data} ...
- Chrome Inspect调试微信出现404,需要FQ
要么FQ,要么买个程序 见连接 http://www.cnblogs.com/slmk/p/7591126.html
- Java多线程之ReentrantLock与Condition
一.ReentrantLock 1.ReentrantLock简介 ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”.ReentrantLock 类实现了 Lock ,它拥有与 sy ...