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你还记得内容么? ...
随机推荐
- Linux 内核通知链随笔【中】【转】
转自:http://blog.chinaunix.net/uid-23069658-id-4364171.html 关于内核通知链不像Netlink那样,既可以用于内核与用户空间的通信,还能用于内核不 ...
- 前言-关于学习OC还是学习Swift的个人理解
一直在考虑一个问题!到底是学swift好呢还是学OC好. 然后得到了解答: 1.如果你只是对苹果系统软件开发有兴趣,把开发作为一种业务爱好,那么选swift就没错,swift也是大势所趋. 2.如果你 ...
- docker基于本地模版导入创建镜像
/* 因为直接去网站拿会下载的慢,所以直接到网站里,对着此包--〉右键--〉复制链接地址 网站地址:https://openvz.org/Download/template/precreated */ ...
- C语言 反序打印字符串中的单词
int main() { char *str = "see you later"; int r = strlen(str); char * p = str; ; while(*st ...
- php上传文件限制
客户端限制(客户端限制在实际上是无法阻止上传): 通过表单隐藏域限制上传文件的最大值 <input type=’hidden’ name=’MAX_FILE_SIZE’ value=’字节数’ ...
- LeetCode解题报告—— Permutations & Permutations II & Rotate Image
1. Permutations Given a collection of distinct numbers, return all possible permutations. For exampl ...
- Sort List——经典(链表中的归并排序)
Sort a linked list in O(n log n) time using constant space complexity. 对一个链表进行排序,且时间复杂度要求为 O(n lo ...
- AC日记——[ZJOI2015]幻想乡战略游戏 洛谷 P3345
[ZJOI2015]幻想乡战略游戏 思路: 树剖暴力转移: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1 ...
- mac 远程桌面连接分享
mac 远程桌面连接分享 8.0版本 https://pan.baidu.com/s/1wgVvAmQreGwYZAhLST764w 10.0版本 https://pan.baidu.com/s/1Y ...
- jquery中的done和always解决ajax问题
昨天写一个跨域请求json数据的实例.遇到传值问题,尝试了各种方式都不行,后来发现,同一个地址,同一个ip请求次数频繁传值相同的话,ajax会默认跟一个&?时间戳,这就导致我传过去的值是错误的 ...