博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
连通图
阅读量:5975 次
发布时间:2019-06-20

本文共 1301 字,大约阅读时间需要 4 分钟。

连通图

Time Limit:1000MS  Memory Limit:65536K

Total Submit:17 Accepted:4

Description

 

Input

输入:每组数据的第一行是两个整数n 和m(0 < n <=100)。n 表示图的顶点

数目,0 < m <= 100 表示图中边的数目。如果n 为 0 表示输入结束。随后有m 行数据,每
行有两个值x 和y(0 < x , y <=n ),表示顶点x 和y 相连,顶点的编号从1 开始计
算。输入不保证这些边是否重复。

Output

输出:对于每组输入数据,如果所有从1~n所有顶点都是连通的,输出 ’YES’ ,否则输

出 ’NO’。

Sample Input

4 31 22 33 23 21 22 30 0

Sample Output

NOYES
ContractedBlock.gif
ExpandedBlockStart.gif
View Code
 
#include
<
iostream
>
using
namespace
std;
int
n,m;
int
a,b;
int
i,j;
int
flag;
int
map[
101
][
101
];
int
used[
101
];
void
dfs(
int
x )
{
for
(
int
p
=
1
; p
<=
n; p
++
)
if
(map[x][p]
==
1
&&
used[p]
==
0
)
{
flag
++
;
used[p]
=
1
;
if
(flag
==
n
-
1
)
break
;
if
(p
<=
n
&&
flag
<
n
-
1
) dfs(p);
p
=
1
; //关键点
}
}
int
main()
{
while
(cin
>>
n
>>
m,n
+
m)
{
memset(map ,
0
,
sizeof
(map));
memset(used,
0
,
sizeof
(used));
for
(i
=
1
; i
<=
m; i
++
)
{
cin
>>
a
>>
b;
if
(a
!=
b) map[a][b]
=
map[b][a]
=
1
;
}
for
(i
=
1
; i
<=
n ; i
++
)
{
flag
=
0
;
for
(j
=
1
; j
<=
n; j
++
)
{
memset(used,
0
,
sizeof
(used));
if
(map[i][j]
==
1
&&
i
!=
j )
{
flag
=
0
;
used[i]
=
1
; used[j]
=
1
;
flag
++
;
dfs(j);
if
(flag
==
n
-
1
)
break
;
}
}
if
(flag
==
n
-
1
)
break
;
}
if
(flag
==
n
-
1
) cout
<<
"
YES
"
<<
endl;
else
cout
<<
"
NO
"
<<
endl;
}
return
0
;
}

转载于:https://www.cnblogs.com/FCWORLD/archive/2011/05/15/2047053.html

你可能感兴趣的文章
数据之路 Day4 - Python基础4
查看>>
使用openCV打开USB摄像头(UVC 小米micro接口)
查看>>
Luogu P3577 [POI2014]TUR-Tourism
查看>>
Scrapy框架的基本使用
查看>>
ActionResult,PartialViewResult,EmptyResult,ContentResult
查看>>
关于泛型类,泛型接口,泛型函数
查看>>
@pathvariable和@RequestParam的区别
查看>>
测试驱动开发
查看>>
C++操作符重载
查看>>
Redis实现分布式锁2
查看>>
【Udacity】线性回归方程 Regression
查看>>
前端架构设计1:代码核心
查看>>
RPC 框架通俗解释 转自知乎(洪春涛)
查看>>
获取cookie后,使用cookie进行接下来的自动化操作
查看>>
算法笔记--数论模板小集(待增)
查看>>
SASS初学者入门(转)
查看>>
pl/sql developer开发工具的beautifier美化插件
查看>>
C语言100个算法经典例题(七)
查看>>
轻松实现远程批量拷贝文件脚本(女学生作品)
查看>>
Nmap在pentest box中的扫描及应用
查看>>