HDU 5424 Rikka with Graph II
题目大意: 在 N 个点 N 条边组成的图中判断是否存在汉密尔顿路径。
思路:忽略重边与自回路,先判断是否连通,否则输出“NO”,DFS搜索是否存在汉密尔顿路径。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
using namespace std;
#define INF 0x7fffffff
int n,ans,vis[1010],f[1010],cnt;
vector<int> adj[1010];
#define pii pair<int,int>
map<pii,int> MAP;
int find(int x){
return f[x] == x ? x : f[x] = find(f[x]);
}
void init(){
int i;
for(i=0;i<=n;i++){
adj[i].clear();
f[i] = i;
}
}
void judge(int u) {
vis[u] = 1;
cnt ++;
int d = adj[u].size();
for(int i = 0; i < d; i ++) {
int v = adj[u][i];
if(!vis[v]) {
judge(v);
}
}
}
bool DFS(int u, int cnt) {
vis[u] = 1;
if(cnt == n) return true;
int d = adj[u].size();
for(int i = 0; i < d; i ++) {
int v = adj[u][i];
if(!vis[v]) {
if(DFS(v, cnt + 1)) return true;
vis[v] = 0;
}
}
return false;
}
int main(){
int i,j,a,b,x,y,degree[1010];
while(scanf("%d",&n) == 1){
memset(degree,0,sizeof(degree));
MAP.clear();
init();
for(i=1;i<=n;i++){
scanf("%d%d",&a,&b);
if(MAP.find(make_pair(a,b)) == MAP.end() && MAP.find(make_pair(b,a)) == MAP.end() && a != b){
degree[a] ++;
degree[b] ++;
MAP[make_pair(a,b)] = 1;
MAP[make_pair(b,a)] = 1;
adj[a].push_back(b);
adj[b].push_back(a);
x = find(a);
y = find(b);
if(x != y)
f[x] = y;
}
}
int k,MIN = INF;
for(i=1;i<=n;i++)
if(degree[i] < MIN){
k = i;
MIN = degree[i];
}
int num2 = 0;
for(i=1;i<=n;i++){
if(degree[i] == 1)
num2 ++;
}
if(num2 > 2){
printf("NO\n");
continue ;
}
cnt = 0;
memset(vis,0,sizeof(vis));
judge(1);
if(cnt != n){
printf("NO\n");
continue;
}
memset(vis,0,sizeof(vis));
if(DFS(k,1))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
HDU 5424 Rikka with Graph II的更多相关文章
- HDU 5424——Rikka with Graph II——————【哈密顿路径】
Rikka with Graph II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- hdu 5424 Rikka with Graph II (BestCoder Round #53 (div.2))(哈密顿通路判断)
http://acm.hdu.edu.cn/showproblem.php?pid=5424 哈密顿通路:联通的图,访问每个顶点的路径且只访问一次 n个点n条边 n个顶点有n - 1条边,最后一条边的 ...
- hdu 5424 Rikka with Graph II(dfs+哈密顿路径)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so h ...
- HDU 5831 Rikka with Parenthesis II(六花与括号II)
31 Rikka with Parenthesis II (六花与括号II) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- HDU 5831 Rikka with Parenthesis II (栈+模拟)
Rikka with Parenthesis II 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5831 Description As we kno ...
- hdu 5831 Rikka with Parenthesis II 线段树
Rikka with Parenthesis II 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5831 Description As we kno ...
- HDU 5631 Rikka with Graph 暴力 并查集
Rikka with Graph 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5631 Description As we know, Rikka ...
- HDU 5422 Rikka with Graph
Rikka with Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- HDU 6090 Rikka with Graph
Rikka with Graph 思路: 官方题解: 代码: #include<bits/stdc++.h> using namespace std; #define ll long lo ...
随机推荐
- C语言中所有变量和常量所使用的内存总结
(1)相同点:三种获取内存的方法,都可以给程序提供可用内存,都可以用来定义变量给程序用.(2)不同点:栈内存对应C中的普通局部变量(别的变量还用不了栈,而且栈是自动的,由编译器和运行时环境共同来提供服 ...
- day49
几天没写了 这几天比较麻木呢 各种课程的再看 想买一直不舍得money 今天下定决心买了 这样我也静下心好好备战把 一天背的东西好多 政治和作文也是背了就忘记 尽力把 今天的买的课很悬乎 就不在这说了 ...
- c语言指向结构体数组的指针
#include <stdio.h> #include <stdlib.h> struct dangdang { ]; ]; ]; int num; int bugnum; ] ...
- hdu 5423 Rikka with Tree(dfs)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...
- 在CentOS中编译安装VIM 7.3
默认安装的 Vim 不带有多字符支持,所以不支持中文.无论是将 CentOS 本来的语系改为中文还是将 Vim 的语系设置改为中文,都不能正常显示中文.为了在 Vim 中能够正常处理中文,我们需要在编 ...
- java 版本SQLHelper
package com.jack.SQLHelper; import java.sql.*;import java.util.logging.*;import javax.swing.table.*; ...
- swift2.0 UIImagePickerController 拍照 相册 录像
系统 ios9.1 语言swift2.0 在app 里最常用的功能就是多媒体选择,首先我们storyboard 创建一个button 用于触发选择事件 @IBAction func selectIma ...
- XML基本知识
一.xml简介 1.xml(可扩展标记语言),是一种标记语言,类似于html,其作用主要是传输数据,并非显示数据! 2.xml标签没有被预定义需要用户自行定义. 3.xml由w3c组织发布,遵循200 ...
- SQL Server类型与C#类型对应关系
SQL类型 C#类型 bit bool tinyint byte smallint short int int bigint long real float float double money de ...
- org.hibernate.service.jndi.JndiException: Error parsing JNDI name []
我的hibernate.cfg.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTY ...