题意

小组里有N个人,每个人都有一个或多个朋友在小组里。将小组分成两个队伍,每个队伍的任意一个成员都有至少一个朋友在另一个队伍。

思路

一开始觉得和前几天做过的一道2-sat(每个队伍任意两个成员都必须互相认识)相似然后就往那边想了……看了题解才发现这题很简单…… 我们注意到同组里的人是互不影响的,所以一个人如果已经确定在哪组的话是不会对后面进入这个组的人产生影响的。 所以我们按顺序直接搜就可以了,每个人在他朋友里面找一个已经确定组的,然后放到对面组。如果他的所有朋友都没确定,把他随便放一个组就行了。

代码

[java] import java.util.*; import java.util.Map.Entry; import java.math.*; public class Main{ static int group[] = new int [205]; static Vector <Vector> adj = new Vector <Vector> (); public static int divide(int p){ group[p+1] = -2; for (int j = 0; j < adj.get(p).size(); j ++){ int v = (int) adj.get(p).get(j); if (group[v] == -1){ return (group[p+1] = 1 - divide(v-1)); } if (group[v] > -1){ return (group[p+1] = 1 - group[v]); } } if (group[p+1] == -2) return (group[p+1] = 0); return 0; } public static void main(String args[]){ Scanner cin = new Scanner(System.in); int n = cin.nextInt(); for (int i = 1; i <= n; i ++){ int tmp = 0; Vector <Integer> tmpv = new Vector <Integer> (); while((tmp = cin.nextInt()) != 0){ tmpv.addElement(tmp); } adj.addElement(tmpv); } boolean ok = true; for (int i = 0; i < adj.size(); i ++){ group[i+1] = -1; if (adj.get(i).size() == 0){ ok = false; break; } } for (int i = 0; i < adj.size(); i ++){ group[i+1] = divide(i); } if (ok == false){ System.out.println("0"); } else{ Vector <Integer> ans = new Vector <Integer> (); for (int i = 1; i <= n; i ++){ if (group[i] == 0){ ans.addElement(i); } } System.out.println(ans.size()); for (int i = 0; i < ans.size(); i ++){ if (i > 0) System.out.print(" "); System.out.print(ans.get(i)); } System.out.println(""); } cin.close(); } } [/java]

转载于:https://www.cnblogs.com/AbandonZHANG/p/4114349.html

URAL 1106 Two Teams (DFS)相关推荐

  1. 1106. 解析布尔表达式 DFS

    1106. 解析布尔表达式 给你一个以字符串形式表述的 布尔表达式(boolean) expression,返回该式的运算结果. 有效的表达式需遵循以下约定: "t",运算结果为  ...

  2. URAL 1156 Two Rounds (DFS二分染色 + 分组背包)

    #include <stdio.h> #define MAX 110int numOfTasks, numOfPairs; int numOfProblems; typedef struc ...

  3. URAL 1009 K-based Numbers (DFS)

    #include <stdio.h>int numOfDigits, base; int result;void isValid(int digits, int preDigit){if ...

  4. PAT甲级题目解析和知识点分类整理

    转载请注明出处 个人博客:https://maxusun.github.io/ 今天整理电脑,发现了去年为了考研浙大计算机整理的PAT资料.现在考研已经尘埃落定.想到当时盲目刷题浪费了好多时间,在这里 ...

  5. DFS水题 URAL 1152 False Mirrors

    题目传送门 1 /* 2 题意:一个圈,每个点有怪兽,每一次射击能消灭它左右和自己,剩余的每只怪兽攻击 3 搜索水题:sum记录剩余的攻击总和,tot记录承受的伤害,当伤害超过ans时,结束,算是剪枝 ...

  6. 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof

    题目传送门 1 /* 2 记忆化搜索(DFS+DP):dp[x][y] 表示x个蛋,在y楼扔后所需要的实验次数 3 ans = min (ans, max (dp[x][y-i], dp[x-1][i ...

  7. PAT甲题题解-1106. Lowest Price in Supply Chain (25)-(dfs计算树的最小层数)

    统计树的最小层数以及位于该层数上的叶子节点个数即可. 代码里建树我用了邻接链表的存储方式--链式前向星,不了解的可以参考,非常好用: http://www.cnblogs.com/chenxiwenr ...

  8. 1106. Lowest Price in Supply Chain (25)-PAT甲级真题(dfs,bfs,树的遍历)

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  9. URAL 2013 Neither shaken nor stirred dfs 模拟

    题目链接:点击打开链接 题意: 给定n个点的有向图: 下面n行,第一个数字表示点权,后面一个数字m表示有m条边. 起点是1. 对于每个点,输出2个值表示前驱点权1和该点点权2. 1.若有多条路径到达该 ...

最新文章

  1. php面对对象设计,PHP对象与设计
  2. request和response一览
  3. python 图像相似 phash和compare_ssim比较
  4. CentOS转的服务器磁盘规划
  5. 音视频技术开发周刊 | 183
  6. 【图像处理】——遍历图像所有像素的方法(for 循环和np.where遍历)应用在模板制作
  7. (27)呼吸灯verilog与VHDL编码(学无止境)
  8. ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
  9. 多领域合作 浪潮与美亚柏科赋能信息安全
  10. 亲密关系沟通-【唤起亲密】-在平淡关系中创造高质量沟通
  11. javascript在IE下的格式问题
  12. 计算机组成原理第三章课后答案,《计算机组成原理》第三章课后题参考答案
  13. 上海计算机应用基础自考上机,2012年上海自考《计算机应用基础》上机考核大纲...
  14. mysql 分页 pageindex_根据当前页号(pageIndex)和页大小(pageSize)获取分页数据
  15. 【论文笔记】RRU-Net: The Ringed Residual U-Net for Image Splicing Forgery Detection
  16. java中的character_什么是Java Character类?Character类的常用方法详解
  17. 【.Net实用方法总结】 整理并总结System.IO中MemoryStream类及其方法介绍
  18. 计算机管理主分区改成逻辑分区,win10系统电脑的四个分区都是主分区,主分区如何改为逻辑分区?...
  19. postman接口自动化测试之判断结果是否符合预期
  20. 基于Java的网上蛋糕店销售系统PPT免费模板

热门文章

  1. Python字符串的编码与解码(encode与decode)
  2. 昆士兰科技大学计算机专业,昆士兰科技大学QUT计算机科学Computer Science专业排名第101-125位(2021年THE世界大学商科排名)...
  3. 技术前沿资讯-Apache Flink 1.14 新特性介绍
  4. java监控rabbitMq服务状态,SpringCloud-Turbine【RabbitMQ服务监控】
  5. java项目processes设置,Jvm调优和SpringBoot项目优化的详细教程
  6. Linux挂载多个文件夹读不出,FTP不显示Linux挂载文件夹怎么办?-处理FTP不显示Linux挂载文件夹的方案 - 河东软件园...
  7. 前端使用正则表达式从接口地址栏取值并将对应的值展示在页面上
  8. 【APICloud系列|21】使用APICloud敏捷式开发总结,回顾开发一个完整APP过程。
  9. 从WEB应用的角度,一个应用都需要维护一些不同作用范围的状态, 请问下面哪些状态作用域是WEB应用特有的:( )
  10. CVE-2017-15715漏洞复现