SDUT OJ 之 连通分量个数 (dfs)
数据结构实验:连通分量个数
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入
输出
示例输入
2
3 1
1 2
3 2
3 2
1 2
示例输出
2
1
算法分析:这是我从家回到学校训练 做连通分量的第一道题,虽然一开始的算法想错了,运行结果不对。
但正是在前面算法的基础上进行的修改,最后就是DFS 求路径的条数!唉,这种题以后不能马虎啦!!!
一开始竟然是这么想的: 结果=总的点数n - 未被访问的点 + dfs路径数 , 发现程序跑完样例的结果偏大!
其实这么想的原因自己也知道了,因为我开始想错了,dfs如果遇到一个点的路径时也要+1,这个地方我想错了!
以后继续多多使用dfs, 禁止此类错误的重犯! 修改完代码后,测试样例通过,提交一遍Accepted了!
注意:借助此题加深对连通分量(离散数学的知识点)的记忆和理解 ! comn on ! ! !
代码如下:
#include <stdio.h>
#include <string.h>
int n, m; int map[50][50];
int vt[50];
int cnt; //记录连通分量的个数 void dfs(int u)
{
vt[u]=1; //标记该点访问
int i;
for(i=1; i<=n; i++)
{
if( !vt[i] && map[u][i]==1 )
{
vt[i]=1;
dfs(i);
}
}
} // dfs的路径数
int main()
{
int t;
int i, j, k;
int u, v;
scanf("%d", &t);
while(t--)
{
scanf("%d %d", &n, &m);
memset(map, 0, sizeof(map));
cnt=0; //数据初始化
memset(vt, 0, sizeof(vt));
for(i=0; i<m; i++)
{
scanf("%d %d", &u, &v );
map[u][v] = 1;
map[v][u] = 1;
}
for(j=1; j<=n; j++)
{
if(!vt[j] )
{
dfs(j);
cnt++;
}
}
printf("%d\n", cnt );
}
return 0;
}
SDUT OJ 之 连通分量个数 (dfs)的更多相关文章
- SDUT 1488 数据结构实验:连通分量个数
		
数据结构实验:连通分量个数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 在无向图中,如 ...
 - SDUT OJ  1221   亲和数 (找出某个数n所有的因子数,只需要暴力:2->sqrt(n) 即可 )
		
亲和数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲和数对. ...
 - SDUT OJ 2607
		
/*http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2607*/ 题目大意:给出一个字符串,求出里 ...
 - CodeForces - 1243D. 0-1 MST(补图连通分量个数)
		
Ujan has a lot of useless stuff in his drawers, a considerable part of which are his math notebooks: ...
 - SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs ,    *【模板】 )
		
图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...
 - PAT甲题题解-1004. Counting Leaves (30)-统计每层叶子节点个数+dfs
		
统计每层的叶子节点个数建树,然后dfs即可 #include <iostream> #include <cstdio> #include <algorithm> # ...
 - 『ACM C++』HDU杭电OJ | 1416 - Gizilch (DFS - 深度优先搜索入门)
		
从周三课开始总算轻松了点,下午能在宿舍研究点题目啥的打一打,还好,刚开学的课程还算跟得上,刚开学的这些课程也是复习以前学过的知识,下半学期也不敢太划水了,被各种人寄予厚望之后瑟瑟发抖,只能努力前行了~ ...
 - 【离散数学】 SDUT OJ 传递闭包   &&   memset 使用注意事项
		
传递闭包 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 已知有n头牛,m次战斗关系, ...
 - 华为OJ:素数对个数
		
素数对个数 题目描述若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“ ...
 
随机推荐
- Linux常用的几个vi小命令
			
输入跳转命令: 命令行前 Ctrl+A 命令行后 Ctrl+E VI命令中: 当前行 行首 "0" 当前行 行尾 "Shift+4" 当前文档首行首字符:& ...
 - jQuery  ajax 获取信息展示在“下拉列表”中
			
<link href="${ctxStatic}/jquery-select2/4.0.3/select2.min.css" rel="stylesheet&quo ...
 - 重读金典------高质量C编程指南(林锐)-------第七章 内存管理
			
2015/12/10补充: 当我们需要给一个数组返回所赋的值的时候,我们需要传入指针的指针.当我们只需要一个值的时候,传入指针即可,或者引用也可以. 结构大致如下: char* p = (char*) ...
 - Theme.AppCompat.Light.DarkActionBar ActionBarActivity
			
关于android-support-v7-appcompat.jar的引用.这个不单纯的把jar复制到项目lib目录下的,不然就会报一堆主题找不到的2b问题, 正确方法例如以下: 1.找到androi ...
 - php程序执行过程--非宏观和微观而是写的程序一行一行的路径----利用xdebug了解一段程序的执行过程----覆盖率
			
1.xdebug_start_code_coverage();//在需要开始跟踪程序执行路径时使用 2.var_dump(xdebug_get_code_coverage());//在结尾使用打印程序 ...
 - Java编码辅助工具:Mapstruct—— Java对象转换框架
			
项目开发中,业务分层会涉及不同类型的Bean之间需要相互转换,如PO与DTO之间,PO与VO之间等.手动编码setter/getter各个对应属性,会显得臃肿繁琐.通过Mapstruct框架可简单方便 ...
 - python升级安装后的yum的修复
			
升级python版本号后,执行yum # yum -y install openssl 提演示样例如以下: There was a problem importing one of the Pytho ...
 - 字符串转化成十六进制输出StrToHex(Delphi版、C#版)
			
//注意:Delphi2010以下版本默认的字符编码是ANSI,VS2010的默认编码是UTF-8,delphi版字符串事先须经过AnsiToUtf8()转码才能跟C#版得到的十六进制字符串显示结果一 ...
 - 深入Asyncio(十一)优雅地开始与结束
			
Startup and Shutdown Graceful 大部分基于asyncio的程序都是需要长期运行.基于网络的应用,处理这种应用的正确开启与关闭存在惊人的复杂性. 开启相对来说更简单点,常规做 ...
 - Docker入门系列1:简介
			
可以实现快速部署. 比如一台 16 核 32G 内存的虚拟机上,需要跑 500+ 个用户的应用(每个应用的功能可以认为是一个网站 + 一系列的 RESTful API),有两个事情很重要: 资源隔离: ...