Hiho---欧拉图
欧拉路·一
描述
小Hi和小Ho最近在玩一个解密类的游戏,他们需要控制角色在一片原始丛林里面探险,收集道具,并找到最后的宝藏。现在他们控制的角色来到了一个很大的湖边。湖上有N个小岛(编号1..N),以及连接小岛的M座木桥。每座木桥上各有一个宝箱,里面似乎装着什么道具。
湖边还有一个船夫,船夫告诉主角。他可以载着主角到任意一个岛上,并且可以从任意一个岛上再载着主角回到湖边,但是主角只有一次来回的机会。同时船夫告诉主角,连接岛屿之间的木桥很脆弱,走过一次之后就会断掉。
因为不知道宝箱内有什么道具,小Hi和小Ho觉得如果能把所有的道具收集齐肯定是最好的,那么对于当前岛屿和木桥的情况,能否将所有道具收集齐呢?
举个例子,比如一个由6个小岛和8座桥组成的地图:

主角可以先到达4号小岛,然后按照4->1->2->4->5->6->3->2->5的顺序到达5号小岛,然后船夫到5号小岛将主角接回湖边。这样主角就将所有桥上的道具都收集齐了。
输入
第1行:2个正整数,N,M。分别表示岛屿数量和木桥数量。1≤N≤10,000,1≤M≤50,000
第2..M+1行:每行2个整数,u,v。表示有一座木桥连接着编号为u和编号为v的岛屿,两个岛之间可能有多座桥。1≤u,v≤N
输出
第1行:1个字符串,如果能收集齐所有的道具输出“Full”,否则输出”Part”。
- 样例输入
- 
6 8 
 1 2
 1 4
 2 4
 2 5
 2 3
 3 6
 4 5
 5 6
- 样例输出
- 
Full 代码: 经过Hiho验证,符合题目要求。 import java.util.ArrayList; 
 import java.util.Scanner; public class Main { public static void main(String[] argv){ Scanner in = new Scanner(System.in);
 int m = in.nextInt();
 int n = in.nextInt();
 /*
 * 用可变长数组来代替链表 描述无向图
 */
 ArrayList<Integer>[] s = new ArrayList[m];
 for(int i=0; i<m; i++){
 s[i] = new ArrayList<Integer>();
 }
 for(int j=0; j<n; j++){
 int a = in.nextInt();
 int b = in.nextInt();
 s[a-1].add(b-1);
 s[b-1].add(a-1);
 }
 in.close();
 //System.out.println("Begin check");
 Main Test = new Main();
 /*
 * 查看是否符合 度数为奇数的点有2个或0个
 */
 int begin_State = Test.firstSuccess(s);
 if(begin_State==s.length){
 System.out.println("Part");
 return;
 }
 else{
 //System.out.println(begin_State);
 /*
 * 查看是否为连通图
 */
 boolean second = Test.secondSuccess(s, begin_State);
 if(second)
 System.out.println("Full");
 else
 System.out.println("Part");
 } } public int firstSuccess(ArrayList[] s){
 int success = 0;
 int leng =s.length;
 int Max_simple=0;
 for(int i=0; i<leng; i++){
 //System.out.println(s[i].toString());
 int temp = s[i].size();
 //System.out.print(temp);
 if(temp%2==1){
 success++;
 Max_simple=i;
 //System.out.println(i);
 }
 if(success>2)
 break;
 }
 //System.out.println(success);
 if(success==2||success==0)
 return Max_simple;
 else
 return leng;
 } public boolean secondSuccess(ArrayList[] s, int begin){
 int length = s.length;
 int [] Add = new int[length];
 int [] Checked = new int[length];
 Add[begin]=1;
 int Number=0;
 while(true){
 int temp=0; int not_End=0;
 for(int i=0; i<length; i++){
 if(Add[i]==1&&Checked[i]==0){
 temp=i;
 not_End++;
 break;
 }
 }
 if(not_End==0)
 break;
 //System.out.println(temp);
 for(int k=0; k<s[temp].size();k++){
 Add[(int) s[temp].get(k)]=1;
 }
 Checked[temp]=1; Number++;
 }
 //System.out.println(Number);
 if(Number==length)
 return true;
 else
 return false;
 }
 }
Hiho---欧拉图的更多相关文章
- 【DP】HIHO 1078
		HIHO #1037 : 数字三角形 题意:中文题就不说了. 思路:提示也很清楚,就这里贴一下代码.注意边界情况. dp[i][j] = max(dp[i-1][j],dp[i-1][j-1])+ma ... 
- hiho一下21周  线段树的区间修改 离散化
		离散化 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho ... 
- 【BZOJ-3033】太鼓达人     欧拉图 + 暴搜
		3033: 太鼓达人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 204 Solved: 154[Submit][Status][Discuss] ... 
- poj 2513 Colored Sticks trie树+欧拉图+并查集
		点击打开链接 Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 27955 Accepted ... 
- hiho #1283 hiho密码 [Offer收割]编程练习赛3
		#1283 : hiho密码 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho根据最近在密码学课上学习到的知识,开发出了一款hiho密码,这款密码的秘钥是这样生成的 ... 
- hiho一下 第九十五周 数论四·扩展欧几里德
		题目 : 数论四·扩展欧几里德 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho周末在公园溜达.公园有一堆围成环形的石板,小Hi和小Ho分别站在不同的石板上 ... 
- hiho  毁灭者问题
		描述 在 Warcraft III 之冰封王座中,毁灭者是不死族打三本后期时的一个魔法飞行单位. 毁灭者的核心技能之一,叫做魔法吸收(Absorb Mana): 现在让我们来考虑下面的问题: 假设你拥 ... 
- POJ 1386 Play on Words(欧拉图的判断)
		Play on Words Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11838 Accepted: 4048 De ... 
- hiho 第116周,最大流最小割定理,求最小割集S,T
		小Hi:在上一周的Hiho一下中我们初步讲解了网络流的概念以及常规解法,小Ho你还记得内容么? 小Ho:我记得!网络流就是给定了一张图G=(V,E),以及源点s和汇点t.每一条边e(u,v)具有容量c ... 
- hiho一下116周 网络流
		网络流二·最大流最小割定理 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi:在上一周的Hiho一下中我们初步讲解了网络流的概念以及常规解法,小Ho你还记得内容么? ... 
随机推荐
- 【Git/GitHub学习笔记】基本操作——创建仓库,本地、远程同步等
			近日想分享一些文件,但是用度盘又太麻烦了(速度也很恶心).所以突发奇想去研究了下GitHub的仓库,这篇文章也就是一个最最最基础的基本操作.基本实现了可以在GitHub上存储文本信息与代码. 由于我的 ... 
- c#上传文件时,当选择的文件为0kb,会验证不通过
			FileUpload1.HasFile 当FileUpload1控件选择的文件为0KB时,FileUpload1.HasFile返回false 
- linux命令(39):ss命令
			ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信 ... 
- NativeScriptEngineService 被调用流程
			AbsractSearchScritp 有个lookup! NativeScriptEngineService search()会调用 script.setLookup() NativeScriptE ... 
- Find Minimum in Rotated Sorted Array I&&II——二分查找的变形
			Find Minimum in Rotated Sorted Array I Suppose a sorted array is rotated at some pivot unknown to yo ... 
- debian 7 安装 rz sz lrzsz
			https://blog.csdn.net/hchaoyangming/article/details/51582749 
- 7.spark Streaming 技术内幕 : 从DSteam到RDD全过程解析
			原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/) 上篇博客讨论了Spark Streaming 程序动态生成Job的过程,并留下一个疑问: ... 
- Qt精简编译方法总结
			原文请看:http://blog.csdn.net/loaden/article/details/6061702 Qt如果采取默认编译安装,一般都要占用上G的空间.当初自己不想涉及Qt的一个原因,就是 ... 
- 其实参与QtCreator开发也很容易
			http://bbs.csdn.net/topics/370241186 10个月前发过一个组建Qt团队,共同研究.学习.完善QtCreator的帖子,不过在为QtCreator提交完一个补丁后,就没 ... 
- 关于在eclipse下的mapreduce工程打包成jar包的问题(包含第三方jar包)
			这个问题也是在开发项目中经常遇到的一个问题,网上提供了很多方法,但是我发现很多并不适用,这里推荐两种方法,一种肯定没问题,就是比较麻烦,另一种是适用FatJar来打包,但是我没成功,原因估计出在ubu ... 
