PTA List Components
For a given undirected graph with N vertices and E edges, please list all the connected components by both DFS and BFS. Assume that all the vertices are numbered from 0 to N-1. While searching, assume that we always start from the vertex with the smallest index, and visit its adjacent vertices in ascending order of their indices.
Input Specification:
Each input file contains one test case. For each case, the first line gives two integers N (0<N<=10) and E, which are the number of vertices and the number of edges, respectively. Then E lines follow, each described an edge by giving the two ends. All the numbers in a line are separated by a space.
Output Specification:
For each test case, print in each line a connected component in the format "{ v1 v2 ... vk }". First print the result obtained by DFS, then by BFS.
Sample Input:
8 6 0 7 0 1 2 0 4 1 2 4 3 5
Sample Output:
{ 0 1 4 2 7 }
{ 3 5 }
{ 6 }
{ 0 1 2 7 4 }
{ 3 5 }
{ 6 }
这题比较水……就是写个图的DFS和BFS……当然DFS是遍历到这个点才标记该点已经被访问,并且已经访问过的点就不要再去访问了,不然如果图中有环的话就一直递归下去了,BFS的话是只要入队就把相应节点标记(不用管它有没有遍历到,因为只要入队肯定会遍历到),这样标记过的点就不用再入队了,从而避免了重复入队的发生。
下面是代码:
//
// main.c
// List Components
//
// Created by 余南龙 on 2016/12/6.
// Copyright © 2016年 余南龙. All rights reserved.
//
#include <stdio.h>
#include <string.h>
#define MAXV 10000
int Graph[MAXV][MAXV];
int visit[MAXV], connected[MAXV];
int N, E, top;
void DFS(int v){
int i;
connected[++top] = v;
visit[v] = ;
; i < N; i++){
== Graph[v][i]&& == visit[i]){
DFS(i);
}
}
}
void BFS(int v){
];
, j = , i;
Q[++tail] = v;
visit[Q[j]] = ;
){
connected[++top] = Q[j];
; i < N; i++){
== Graph[Q[j]][i]&& == visit[i]){
Q[++tail] = i;
visit[i] = ;
}
}
j++;
if(tail < j){
break;
}
}
}
void Init(){
int i, u, v;
scanf("%d%d", &N, &E);
; i < E; i++){
scanf("%d%d", &u, &v);
Graph[u][v] = Graph[v][u] = ;
}
}
void Output(){
int i;
printf("{ ");
; i <= top; i++){
printf("%d ", connected[i]);
}
printf("}\n");
}
int main(){
int j;
Init();
memset(visit, , MAXV * sizeof(int));
top = -;
; j < N; j++){
== visit[j]){
DFS(j);
Output();
top = -;
}
}
memset(visit, , MAXV * sizeof(int));
top = -;
; j < N; j++){
== visit[j]){
BFS(j);
Output();
top = -;
}
}
;
}
PTA List Components的更多相关文章
- PTA Strongly Connected Components
Write a program to find the strongly connected components in a digraph. Format of functions: void St ...
- 浙大PTA - - File Transfer
题目链接:https://pta.patest.cn/pta/test/1342/exam/4/question/21732 #include "iostream" #includ ...
- pta 编程题13 File Transfer
其它pta数据结构编程题请参见:pta 这道题考察的是union-find并查集. 开始把数组中每个元素初始化为-1,代表没有父节点.为了使树更加平衡,可以让每一个连通分量的树根的负值代表这个连通分量 ...
- PTA 05-树8 File Transfer (25分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/670 5-8 File Transfer (25分) We have a netwo ...
- angular2系列教程(三)components
今天,我们要讲的是angualr2的components. 例子
- 【shadow dom入UI】web components思想如何应用于实际项目
回顾 经过昨天的优化处理([前端优化之拆分CSS]前端三剑客的分分合合),我们在UI一块做了几个关键动作: ① CSS入UI ② CSS作为组件的一个节点而存在,并且会被“格式化”,即选择器带id前缀 ...
- [LeetCode] Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数
Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...
- Web Components初探
本文来自 mweb.baidu.com 做最好的无线WEB研发团队 是随着 Web 应用不断丰富,过度分离的设计也会带来可重用性上的问题.于是各家显神通,各种 UI 组件工具库层出不穷,煞有八仙过海之 ...
- [备忘] Automatically reset Windows Update components
这两天遇到Windows 10的更新问题,官方有一个小工具,可以用来修复Windows Update的问题,备忘如下 https://support.microsoft.com/en-us/kb/97 ...
随机推荐
- JVM byte code
http://blog.jamesdbloom.com/JVMInternals.html#constant_pool http://grepcode.com/file/repository.grep ...
- 【C】 05 - 声明和定义
仅从形式上看,C程序就是由各种声明和定义组成的.它们是程序的骨架和外表,不仅定义了数据(变量),还定义了行为(函数).规范中的纯语言部分,声明和定义亦花去了最多的篇幅.完全说清定义的语法比较困难,这里 ...
- Abstract和Virtual和interface , 派生类中重写 override / new关键字
http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html C#中Abstract和Virtual 在C#的学习中,容易混淆virtua ...
- python---生成随机密码
#简短地生成随机密码,包括大小写字母.数字,可以指定密码长度 from random import choice import string #python3中为string.ascii_letter ...
- visualSVN Server 设置外网可连接
首先再根节点右键,打开属性菜单. 打开Network选项卡,在Server name一栏中填入主机域名或者是ip. 然后在创建的项目中单机或者右键,就可以得到访问地址了.
- ImageLoader介绍2
Universal Image Loader 是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示.所以,如果你的程序里需要这个功能的话,那么不妨试试它.他本来是 ...
- oracle start with connect by prior 递归查询
Oracle中的select语句可以用start with...connect by prior子句实现递归查询,connect by 是结构化查询中用到的, 其基本语法是: select ... f ...
- .net 使用ffmpeg.exe进行音频转码
#region 音频转换 private int AudioIntervalTime = 100, iAudio = 0; private string strPath = "D:\\web ...
- tmp_table_size
Whenever you increase tmp_table_size and max_heap_table_size, keep in mind that setting these does n ...
- Python从题目中学习:List comprehension
九九乘法表作业其实有更简单的做法,就是用列表推导式. ------------------------------------------------------------------------- ...