hdu4751Divide Groups(dfs枚举完全图集合或者bfs染色)

 1 /*************************************************************************
 2     > File Name: j.cpp
 3     > Author: HJZ
 4     > Mail: 2570230521@qq.com 
 5     > Created Time: 2014年08月28日 星期四 12时26分13秒
 6  ************************************************************************/
 7 
 8 //提議:能否將一個給定的有向圖,變成兩個完全圖(任意兩點都直接相連,雙向邊)
 9 
10 #include <queue>
11 #include <string>
12 #include <cstdio>
13 #include <stack>
14 #include <cstring>
15 #include <iostream>
16 #include <algorithm>
17 #define N 105
18 using namespace std;
19 
20 int a[N], b[N];
21 //a, b集合初始化爲空!
22 int g[N][N];
23 int n;
24 
25 bool flag;
26 
27 bool dfs(int u, int la, int lb){
28    if(u>n && la+lb==n) return true;//如果a ,b集合中的元素數目恰好是n,則說明可以形成兩個完全圖!
29    bool flagx=true;
30    for(int i=0; i<la && flagx; ++i)
31        if(!(g[a[i]][u] && g[u][a[i]]))
32            flagx=false;
33    if(flagx) a[la]=u;//如果u節點可以放入a集合中
34    if(flagx && dfs(u+1, la+1, lb)) return true;
35    bool flagy=true;
36    for(int i=0; i<lb && flagy; ++i)
37        if(!(g[b[i]][u] && g[u][b[i]]))
38             flagy=false;
39    if(flagy) b[lb]=u;//如果u節點可以放入b集合中
40    if(flagy && dfs(u+1, la, lb+1)) return true;
41    return false;
42 }
43 
44 int main(){
45    while(scanf("%d", &n)!=EOF){
46       memset(g, 0, sizeof(g));
47       for(int i=1; i<=n; ++i){
48          int v;
49          vis[i]=0;
50          while(scanf("%d", &v) && v)
51            g[i][v]=1;
52       }
53      flag=dfs(1, 0, 0);
54      if(flag)
55          printf("YES\n");
56      else printf("NO\n");
57    }
58    return 0;
59 }

 1 /*************************************************************************
 2     > File Name: j.cpp
 3     > Author: HJZ
 4     > Mail: 2570230521@qq.com 
 5     > Created Time: 2014年08月28日 星期四 12时26分13秒
 6  ************************************************************************/
 7 //思路:bfs,和判断二分图差不多,将图分成两个集合,如果a和b都有g[a][b]&&g[b][a]说明
 8 //a和b一定在同一个集合中,如果有a,b不在一个集合中,a,c不在同一个集合中,b,c也不在同一个
 9 //集合中,出现矛盾!也就是这个图不能分成两个完全图!
10 #include <queue>
11 #include <string>
12 #include <cstdio>
13 #include <stack>
14 #include <cstring>
15 #include <iostream>
16 #include <algorithm>
17 #define N 105
18 using namespace std;
19 queue<int>q;
20 int g[N][N];
21 int coll[N];
22 int n;
23 
24 bool bfs(int u){
25     while(!q.empty())  q.pop();
26     q.push(u);
27     while(!q.empty()){
28         int x=q.front();
29         q.pop();
30         for(int y=1; y<=n; ++y){
31            if(x==y || g[x][y]&&g[y][x]) continue;
32            if(coll[y]==-1){
33                 coll[y]=coll[x]^1;
34                 q.push(y);
35            }
36            else if(coll[y]==coll[x])
37                 return true;
38         }
39     }
40     return false;
41 }
42 
43 int main(){
44    while(scanf("%d", &n)!=EOF){
45        memset(g, 0, sizeof(g));
46        for(int i=1; i<=n; ++i){
47             int v;
48             while(scanf("%d", &v) && v)
49                 g[i][v]=1;
50             coll[i]=-1;
51        }
52        int i;
53        for(i=1; i<=n; ++i){
54            if(coll[i]==-1){
55                coll[i]=0;//默认是在集合0中
56                if(bfs(i)) break;
57            }
58        }
59        if(i<=n) printf("NO\n");
60        else printf("YES\n");
61    }
62    return 0;
63 }

 

 

转载于:https://www.cnblogs.com/hujunzheng/p/3942077.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java二期_享学二期java架构师

前言-薇:itstudy01在我们工作和学习的过程中&#xff0c;Java线程我们或多或少的都会用到&#xff0c;但是在使用的过程上并不是很顺利&#xff0c;会遇到各种各样的坑&#xff0c;这里我通过讲解Thread类中的核心方法&#xff0c;以求重点掌握以下关键技术点&#xff1a;线程的…

poj3342Party at Hali-Bula(树形dp)

1 /*2 树形dp&#xff01;3 判重思路&#xff1a;4 当dp[v][0]dp[v][1]时&#xff0c;很自然&#xff0c;flag[u][0]必然是有两种方案的。flag[u][1]则不然&#xff0c;5 因为它只和dp[v][0]有关系。而若flag[v][0]不唯一时&#xff0c;则必然flag[u][1]也不唯一6 …

mysql django构架图_(一)Django项目架构介绍

项目的架构为&#xff1a;1、虚拟环境virtualenv安装Django2.1.3安装pymysql安装mysqlclient安装其他等2、项目结构为&#xff1a;应用APP&#xff1a;blog -- 管理博客account -- 管理用户注册/登录/等后台数据库&#xff1a;mysql路由分层及命名空间&#xff1a;根据应用进行…

poj1330Nearest Common Ancestors 1470 Closest Common Ancestors(LCA算法)

LCA思想&#xff1a;http://www.cnblogs.com/hujunzheng/p/3945885.html 在求解最近公共祖先为问题上&#xff0c;用到的是Tarjan的思想&#xff0c;从根结点开始形成一棵深搜树&#xff0c;非常好的处理技巧就是在回溯到结点u的时候&#xff0c;u的子树已经遍历&#xff0c;这…

LCA算法的理解

LCA思想&#xff1a;在求解最近公共祖先为问题上&#xff0c;用到的是Tarjan的思想&#xff0c;从根结点开始形成一棵深搜树&#xff0c;非常好的处理技巧就是在回溯到结点u的时候&#xff0c;u的子树已经遍历&#xff0c;这时候才把u结点放入合并集合中&#xff0c; 这样u结点…

java连加密的mysql_Java 实现加密数据库连接

一、前言在很多项目中&#xff0c;数据库相关的配置文件内容都是以明文的形式展示的&#xff0c;这存在一定的安全隐患。在开发和维护项目时&#xff0c;不仅要关注项目的性能&#xff0c;同时也要注重其安全性。二、实现思路我们都知道项目启动时&#xff0c;Spring 容器会加载…

codeforces Gargari and Bishops(很好的暴力)

1 /*2 题意&#xff1a;给你一个n*n的格子&#xff0c;每一个格子都有一个数值&#xff01;将两只bishops放在某一个格子上&#xff0c;3 每一个bishop可以攻击对角线上的格子&#xff08;主对角线和者斜对角线&#xff09;&#xff0c;然后会获得格子上的4 数值&a…

java词汇速查手册_java 词汇表速查手册

Abstract class 抽象类:抽象类是不允许实例化的类&#xff0c;因此一般它需要被进行扩展继承。Abstract method 抽象方法:抽象方法即不包含任何功能代码的方法。Access modifier 访问控制修饰符:访问控制修饰符用来修饰Java中类、以及类的方法和变量的访问控制属性。Anonymous …

codeforces Gargari and Permutations(DAG+BFS)

1 /*2 题意&#xff1a;求出多个全排列的lcs&#xff01;3 思路&#xff1a;因为是全排列&#xff0c;所以每一行的每一个数字都不会重复&#xff0c;所以如果有每一个全排列的数字 i 都在数字 j的前面&#xff0c;那么i&#xff0c; j建立一条有向边&#xff01;4 …

hdu4292Food(最大流Dinic算法)

/*    题意&#xff1a;每一个人都有喜欢的吃的和喝的&#xff0c;每一个人只选择一个数量的吃的和一个数量的喝的&#xff0c;问能满足最多的人数&#xff01;&#xff1f;    思路&#xff1a;建图很是重要&#xff01;f-food, p-people, d-drink    建图&#x…

python3.5 连接mysql_python3.5 連接mysql本地數據庫

前期准備工作&#xff1a;安裝python的模塊&#xff0c;網上大部分讓安裝mysqldb模塊&#xff0c;但是會報錯&#xff0c;原因是python3.5不被其支持&#xff1a;請看該鏈接 我們也可以這樣解決&#xff1a;直接執行&#xff1a;sudo pip3 install pymysql;在python3中輸入impo…

java异常顺序_网易新闻

public class SmallT {public static void main(String args[]) {SmallT t new SmallT();int b t.get();System.out.println(b);}public int get() {try {return 1;} finally {return 2;}}}返回的结果是2。我可以通过下面一个例子程序来帮助我解释这个答案&#xff0c;从下面…

java中自动装箱的问题

package wrapper;public class WrapperDemo {public static void main(String[] args) {Integer anew Integer(5);Integer bnew Integer(5);System.out.println(ab);System.out.println(a.equals(b));/*falsetrue*/Integer c127;//属于自动装箱Integer d127;//jdk1.5以后&#…

下载国外网站资料需java_Java开发必知道的国外10大网站

1、https://www.google.com/不解释2、https://stackoverflow.com里面包含各种开发遇到的问题及答案&#xff0c;质量比较高。3、https://github.com/免费的开源代码托管网站&#xff0c;包括了许多开源的项目及示例项目等。4、https://dzone.com/提供技术新闻、编程教程、及各种…

poj 1950 Dessert(dfs枚举,模拟运算过程)

/*   这个代码运行的时间长主要是因为每次枚举之后都要重新计算一下和的值&#xff01;    如果要快的话&#xff0c;应该在dfs&#xff0c;也就是枚举的过程中计算出前边的数值&#xff08;这种方法见第二个代码&#xff09;&#xff0c;直到最后&#xff0c;这样不必每…

poj1949Chores(建图或者dp)

1 /*2 题意&#xff1a;n个任务&#xff0c;有某些任务要在一些任务之前完成才能开始做&#xff01;3 第k个任务的约束只能是1...k-1个任务&#xff01;问最终需要最少的时间完成全部的 4 任务&#xff0…

java 空数组如何判断,java判断数组是否为空

java判断数组是否为空根据数组长度判断&#xff0c;如果为0&#xff0c;则为空&#xff0c;反之不是。 (推荐学习&#xff1a;java课程)public class Main {public static void main(String[] args) {int[] array1 new int[]{}; //被当成 {0}if (array1 null) {System.out.pr…

2014牡丹江网络赛ZOJPretty Poem(暴力枚举)

/*   将给定的一个字符串分解成ABABA 或者 ABABCAB的形式&#xff01; 思路&#xff1a;暴力枚举A, B, C串&#xff01; */ 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #include<string>5 6 using namespace std;7 str…

php switch goto,PHP goto语句用法实例

问题当 PHP 在执行代码过程&#xff0c;在某一时刻我们希望它能跳转到某一特定位置继续执行代码&#xff0c;该怎么做呢&#xff1f;回答在 PHP 中&#xff0c;我们可以使用 goto 操作符来使 PHP 代码执行器跳转到程序中某一特定位置。goto 的使用有一定限制&#xff0c;如&…

php curl cookie,php中curl获取返回页面的cookie

php的curl可以模仿用户浏览网页并且获取网页的cookie,获取cookie还有专用的参数如CURLOPT_COOKIEJAR 用于保存 cookie 到文件了,下面一起来看几个例子吧.curl可以获取返回页面设置的cookie,原理跟get_headers是一样的,在返回的头信息中将"Set-Cookie:"的内容取出来即…