zoukankan
html css js c++ java
今天的一个哈密顿图 写了一个恶心的死搜
#include
<
string
.h
>
#include
<
stdio.h
>
int
m, n;
bool
link[
22
][
22
];
bool
v[
22
][
22
];
bool
ll;
bool
lll;
int
bi,bj,ei,ej;
int
c1;
void
dfs(
int
i,
int
j)
{
v[i][j]
=
1
;
if
(i
-
1
>=
0
&&
v[i
-
1
][j]
==
0
&&
link[i
-
1
][j]
==
0
)
{
dfs(i
-
1
,j);
}
if
(j
-
1
>=
0
&&
v[i][j
-
1
]
==
0
&&
link[i][j
-
1
]
==
0
)
{
dfs(i,j
-
1
);
}
if
(i
+
1
<
n
&&
v[i
+
1
][j]
==
0
&&
link[i
+
1
][j]
==
0
)
{
dfs(i
+
1
,j);
}
if
(j
+
1
<
m
&&
v[i][j
+
1
]
==
0
&&
link[i][j
+
1
]
==
0
)
{
dfs(i,j
+
1
);
}
}
void
DFS(
int
i,
int
j)
{
bool
ss
=
0
;
v[i][j]
=
1
;
bool
vv[
21
][
21
];
int
i1,j1;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
vv[i1][j1]
=
v[i1][j1];
v[i][j]
=
0
;
int
ccc
=
0
;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
{
if
(v[i1][j1]
==
0
&&
link[i1][j1]
==
0
)
{
int
cc
=
0
;
if
(i1
-
1
>=
0
&&
v[i1
-
1
][j1]
==
0
&&
link[i1
-
1
][j1]
==
0
)
cc
++
;
if
(j1
-
1
>=
0
&&
v[i1][j1
-
1
]
==
0
&&
link[i1][j1
-
1
]
==
0
)
cc
++
;
if
(i1
+
1
<
n
&&
v[i1
+
1
][j1]
==
0
&&
link[i1
+
1
][j1]
==
0
)
cc
++
;
if
(j1
+
1
<
m
&&
v[i1][j1
+
1
]
==
0
&&
link[i1][j1
+
1
]
==
0
)
cc
++
;
if
(cc
==
1
)
{
ccc
++
;
}
}
}
bool
con
=
1
;
if
(ccc
>
2
) con
=
0
;
v[i][j]
=
1
;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
if
(link[i1][j1]
==
0
&&
v[i1][j1]
==
0
)
dfs(i1,j1);
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
if
(v[i1][j1]
==
0
&&
link[i1][j1]
==
0
)
con
=
0
;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
if
(con)
{
if
(i
-
1
>=
0
&&
v[i
-
1
][j]
==
0
&&
link[i
-
1
][j]
==
0
)
{
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
DFS(i
-
1
,j);
ss
=
1
;
}
if
(j
-
1
>=
0
&&
v[i][j
-
1
]
==
0
&&
link[i][j
-
1
]
==
0
)
{
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
DFS(i,j
-
1
);
ss
=
1
;
}
if
(i
+
1
<
n
&&
v[i
+
1
][j]
==
0
&&
link[i
+
1
][j]
==
0
)
{
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
DFS(i
+
1
,j);
ss
=
1
;
}
if
(j
+
1
<
m
&&
v[i][j
+
1
]
==
0
&&
link[i][j
+
1
]
==
0
)
{
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
DFS(i,j
+
1
);
ss
=
1
;
}
if
(ss
==
0
)
{
ll
=
1
;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
{
if
(v[i1][j1]
==
0
&&
link[i1][j1]
==
0
)
{
ll
=
0
;
i1
=
n,j1
=
m;
break
;
}
}
if
(ll)
{
lll
=
1
;
return
;}
}
}
}
int
main()
{
while
(scanf(
"
%d%d
"
,
&
n,
&
m)
==
2
)
{
lll
=
0
;
ll
=
1
;
memset(v,
0
,
sizeof
(v));
if
(m
==
0
&&
n
==
0
)
break
;
int
i, j;
for
(i
=
0
;i
<
n;i
++
)
{
for
(j
=
0
;j
<
m;j
++
)
{
scanf(
"
%d
"
,
&
link[i][j]);
}
}
ei
=
21
,ej
=
21
;
c1
=
0
;
for
(i
=
0
;i
<
n;i
++
)
for
(j
=
0
;j
<
m;j
++
)
{
if
(v[i][j]
==
0
&&
link[i][j]
==
0
)
{
int
cc
=
0
;
if
(i
-
1
>=
0
&&
v[i
-
1
][j]
==
0
&&
link[i
-
1
][j]
==
0
)
cc
++
;
if
(j
-
1
>=
0
&&
v[i][j
-
1
]
==
0
&&
link[i][j
-
1
]
==
0
)
cc
++
;
if
(i
+
1
<
n
&&
v[i
+
1
][j]
==
0
&&
link[i
+
1
][j]
==
0
)
cc
++
;
if
(j
+
1
<
m
&&
v[i][j
+
1
]
==
0
&&
link[i][j
+
1
]
==
0
)
cc
++
;
if
(cc
==
1
)
{
bi
=
i,bj
=
j;
c1
++
;
i
=
n,j
=
m;
v[bi][bj]
=
1
;
break
;
}
}
}
for
(i
=
0
;i
<
n;i
++
)
for
(j
=
0
;j
<
m;j
++
)
{
if
(v[i][j]
==
0
&&
link[i][j]
==
0
)
{
int
cc
=
0
;
if
(i
-
1
>=
0
&&
v[i
-
1
][j]
==
0
&&
link[i
-
1
][j]
==
0
)
cc
++
;
if
(j
-
1
>=
0
&&
v[i][j
-
1
]
==
0
&&
link[i][j
-
1
]
==
0
)
cc
++
;
if
(i
+
1
<
n
&&
v[i
+
1
][j]
==
0
&&
link[i
+
1
][j]
==
0
)
cc
++
;
if
(j
+
1
<
m
&&
v[i][j
+
1
]
==
0
&&
link[i][j
+
1
]
==
0
)
cc
++
;
if
(cc
==
1
)
{
c1
++
;
ei
=
i,ej
=
j;
i
=
n,j
=
m;
break
;
}
}
}
if
(c1
==
1
||
c1
==
2
)
{
memset(v,
0
,
sizeof
(v));
DFS(bi,bj);
}
if
(c1
==
0
)
{
for
(i
=
0
;i
<
n;i
++
)
{
for
(j
=
0
;j
<
m;j
++
)
{
if
(link[i][j]
==
0
)
{
memset(v,
0
,
sizeof
(v));
DFS(i,j);
}
if
(lll
==
1
)
{
i
=
n,j
=
m;
break
;
}
}
}
}
if
(lll)
printf(
"
Yes\n
"
);
else
printf(
"
No\n
"
);
}
return
0
;
}
查看全文
相关阅读:
区间dp_学习笔记
状态压缩dp_学习笔记
第十一届蓝桥杯C/C++ J题网络分析(带权并查集水题)
状态机dp学习笔记_AcWing
洛谷P4052 [JSOI2007]文本生成器(AC自动机+DP)
洛谷P5840 [COCI2015]Divljak (AC自动机+fail树上dfs序+树上差分线段树维护)
洛谷P3401 [USACO12JAN]Video Game G(AC自动机+记忆化搜索)
HDU3613 Best Reward (exKMP/manacher)
洛谷P2375 [NOI2014]动物园(KMP+倍增优化)
ICPC2017南宁站题解(A,E,F,H,I,J,L,M)
原文地址:https://www.cnblogs.com/SQL/p/913608.html
最新文章
python+selenium2自动化---定位元素报错element click intercepted
linux常用命令---tar压缩、解压对应关系
python+selenium2自动化---使用Select类实现下拉列表的定位
python+selenium2自动化---CheckBox和radiobutton定位
python+selenium2自动化------quit()和close()区别
设计模式原则
动态数组问题
设计模式
Spring Cloud各组件学习
线性查找
热门文章
插值查找
斐波那契查找
二分查找非递归
二分查找
基数排序
归并排序
堆排序
君子不立危墙之下
kafka单机部署、集群部署、命令实操
Kafka基本理论
Copyright © 2011-2022 走看看