第四周__无向图的DFS算法
来源:互联网 发布:淘宝店铺logo尺寸 编辑:程序博客网 时间:2024/06/09 15:45
import java.io.File;
import java.util.Queue;
import java.util.Scanner;
public class Gdfs {
private int vNum;
private int arcNum;
private int counter=1;
private int arc[][];
private int pre[],post[];
boolean[] visited;
public GraphDFS(int vNum,int arcNum){
this.vNum=vNum;
this.arcNum=arcNum;
this.arc=new int[vNum][arcNum];
visited=new boolean[vNum];
pre=new int[vNum];
post=new int[vNum];
}
public int[][] getArc(){
return arc;
}
public void addEdage(int v1,int v2){
arc[v1][v2]=1;
arc[v2][v1]=1;
}
public static void main(String[] args) {
String path="src/tinyG.txt";
try{
Scanner scanner=new Scanner(new File(path));
int vNum= scanner.nextInt();
int arcNum=scanner.nextInt();
GraphDFS g=new GraphDFS(vNum, arcNum);
for(int i=0;i<arcNum;i++){
int v1=scanner.nextInt();
int v2=scanner.nextInt();
g.addEdage(v1, v2);
}
g.DFSTraverse();
for(int i=0;i<vNum;i++){
System.out.println("顶点:"+i+" pre:"+g.pre(i)+",post:"+g.post(i));
}
}catch (Exception e) {
e.printStackTrace();
}
}
public void DFSTraverse(){
for(int i=0;i<vNum;i++){
visited[i]=false;
}
System.out.println("深度优先遍历的结果是:");
int j=1;//第几个连通分量的序号
for(int i=0;i<vNum;i++){//选取某个特定的点开始深度优先搜索
if(!visited[i]){
System.out.println("第"+(j++)+"个连通分量:");
dfs(i);
System.out.println();
}
}
}
public int pre(int v){
return pre[v];
}
public int post(int v){
return post[v];
}
public void dfs(int i){
visited[i]=true;
System.out.print(i+" ");
pre[i]=counter++;
for(int j=0;j<vNum;j++){
if(arc[i][j]==1&&!visited[j]){
dfs(j);
}
}
post[i]=counter++;
}
}
import java.util.Queue;
import java.util.Scanner;
public class Gdfs {
private int vNum;
private int arcNum;
private int counter=1;
private int arc[][];
private int pre[],post[];
boolean[] visited;
public GraphDFS(int vNum,int arcNum){
this.vNum=vNum;
this.arcNum=arcNum;
this.arc=new int[vNum][arcNum];
visited=new boolean[vNum];
pre=new int[vNum];
post=new int[vNum];
}
public int[][] getArc(){
return arc;
}
public void addEdage(int v1,int v2){
arc[v1][v2]=1;
arc[v2][v1]=1;
}
public static void main(String[] args) {
String path="src/tinyG.txt";
try{
Scanner scanner=new Scanner(new File(path));
int vNum= scanner.nextInt();
int arcNum=scanner.nextInt();
GraphDFS g=new GraphDFS(vNum, arcNum);
for(int i=0;i<arcNum;i++){
int v1=scanner.nextInt();
int v2=scanner.nextInt();
g.addEdage(v1, v2);
}
g.DFSTraverse();
for(int i=0;i<vNum;i++){
System.out.println("顶点:"+i+" pre:"+g.pre(i)+",post:"+g.post(i));
}
}catch (Exception e) {
e.printStackTrace();
}
}
public void DFSTraverse(){
for(int i=0;i<vNum;i++){
visited[i]=false;
}
System.out.println("深度优先遍历的结果是:");
int j=1;//第几个连通分量的序号
for(int i=0;i<vNum;i++){//选取某个特定的点开始深度优先搜索
if(!visited[i]){
System.out.println("第"+(j++)+"个连通分量:");
dfs(i);
System.out.println();
}
}
}
public int pre(int v){
return pre[v];
}
public int post(int v){
return post[v];
}
public void dfs(int i){
visited[i]=true;
System.out.print(i+" ");
pre[i]=counter++;
for(int j=0;j<vNum;j++){
if(arc[i][j]==1&&!visited[j]){
dfs(j);
}
}
post[i]=counter++;
}
}
0 0
- 第四周__无向图的DFS算法
- 第四周算法概论作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法【改
- 第四周作业——无向图的DFS算法
- 第四周作业——无向图的DFS算法
- 第四周作业--1图的表示,2无向图的DFS算法,3有向图找环;
- 第四周作业--1图的表示,2无向图的DFS算法,3有向图找环;
- 计科《算法设计与分析》第四周作业——无向图的DFS算法
- 无向图的DFS算法
- 无向图DFS算法
- 第四周__图的表示
- 无向图的DFS和BFS算法实现
- 无向图+DFS
- 【Android平台中的安全编程】の #00-不要在外部存储(SD卡)中存放未加密的敏感信息
- mysql导入外部sql脚本的方法
- 迅速上手LaTeX
- Linux利器 strace |pstack
- 解析(json、xml)
- 第四周__无向图的DFS算法
- 用Calendar类实现Date的设置
- 【《Objective-C基础教程 》笔记ch02】(一)Hello Object-C 项目
- Oracle内存架构详解
- 【转】Linux 使用 iptables 禁止某些 IP 访问
- HDU 2673:shǎ崽 OrOrOrOrz
- 安装 LAMP
- 【leetcode】Remove Duplicates from Sorted Array
- 不能启动DBConsole服务的解决办法