第五周作业——有向图邻接表表示及反向图构造
来源:互联网 发布:技术研究工程师 知乎 编辑:程序博客网 时间:2024/05/17 21:40
1. 有向图中反向图构造。对tinyDG.txt(http://pan.baidu.com/s/1o6jWtcA)文件所表示的图,输出其邻接表表示 与 反向图的邻接表表示。类名:GraphReverse。博文标题:第五周作业——有向图邻接表表示及反向图构造
邻接表表示示例如下:
0:1 5
1:
2:0 3
……
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.Scanner; public class GraphReverse { private int vertexNum; private int arcNum; private boolean visited[]; private List<ArrayList<Integer>> graphListS; private List<ArrayList<Integer>> graphListF; public GraphReverse(int vertexNum,int arcNum,List<ArrayList<Integer>> graphListS,List<ArrayList<Integer>> graphListF){ this.vertexNum=vertexNum; this.graphListS=graphListS; visited=new boolean[vertexNum]; this.graphListF=graphListF; } public static void main(String[] args) { String path="f:/tinyDG.txt"; try{ Scanner scanner=new Scanner(new File(path)); List<ArrayList<Integer>> graphListS=new ArrayList<ArrayList<Integer>>();//存储有向图的邻接表 List<ArrayList<Integer>> graphListF=new ArrayList<ArrayList<Integer>>();//存储有向图的反向图的邻接表 int vertexNum=scanner.nextInt(); int arcNum=scanner.nextInt(); for(int i=0;i<vertexNum;i++){ graphListS.add(new ArrayList<Integer>()); graphListF.add(new ArrayList<Integer>()); } //有向图的存储 for(int i=0;i<arcNum;i++){ int u=scanner.nextInt(); int v=scanner.nextInt(); if(!graphListS.get(u).contains(v)){ graphListS.get(u).add(v); } //有向图的反向图存储 if(!graphListF.get(v).contains(u)){ graphListF.get(v).add(u); } } //有向图的广度优先遍历 GraphReverse g1=new GraphReverse(vertexNum, arcNum, graphListS,null); System.out.println("有向图的邻接表的结果是:"); g1.bfs(vertexNum/2+1,graphListS); System.out.println(" "); //有向图的反向图广度优先的遍历 GraphReverse g2=new GraphReverse(vertexNum, arcNum, null,graphListF); System.out.println("有向图的反向图的邻接表结果是:"); g2.bfs(1,graphListF); }catch (Exception e) { e.printStackTrace(); } } private void bfs(int v,List<ArrayList<Integer>> graphList){ Queue<Integer> que = new LinkedList<Integer>(); que.offer(v); while (!que.isEmpty()) { v = que.poll(); System.out.print(v+":"); visited[v] = true; for (int i = 0; i <graphList.get(v).size(); i++) { int k=graphList.get(v).get(i); System.out.print(k+" "); if (!visited[k]){ //que.add(k); que.offer(k); visited[k] = true; } } System.out.println(); } } }
0 0
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造(GraphReverse)
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——1有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- RGB 常用颜色列表
- 深入浅出Java 重定向和请求转发的区别
- 动态链接库
- java中的Map接口
- 【*_*】【CBIR】【Color】颜色聚合向量Color Coherence vector CCV
- 第五周作业——有向图邻接表表示及反向图构造
- 快速排序,插入排序,归并排序,计数排序,基数排序,堆排序
- git使用命令
- Android 图片Bitmap的剪切
- Android Intent解析
- AndroidManifest.xml配置文件详解
- sqlserver常用知识点备忘录
- 关于UEditor在struts2下图片上传问题
- 自加自减