1.问题引入:
2.代码实现:
package Graph;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Traffic_Project_Test {
public static void main(String[] args) throws Exception{
//构建一个缓冲读取流BufferedReader对象
BufferedReader rd =new BufferedReader(new InputStreamReader(Traffic_Project_Test.class.getClassLoader().getResourceAsStream("traffic_project.txt")));
//第一步,构建地图
//1.读取第一行数据(city,代表城市数量)
int city=Integer.parseInt(rd.readLine());
//2.构建一个Graph对象
Graph G=new Graph(city);
//3.读取第二行数据(道路数目)
int roads=Integer.parseInt(rd.readLine());
//4.循环有限次(道路数目),读取已经修建好的道路
for(int i=0;i<roads;i++){
String road=rd.readLine();
//通过空格堆读取到的字符串line进行分割,将分割后的数据存入数组str中
String[] str=road.split(" ");
int v=Integer.parseInt(str[0]);
int w=Integer.parseInt(str[1]);
//5.通过调用addEdge方法,把边添加到图中,表示已经修建好的道路
G.addEdge(v, w);
}
//第二步:构建一个深度优先搜索对象, 起点设置为9
depthFirstSearch search=new depthFirstSearch(G,9);
//第三步:调用marked方法,判断顶点8和10是否与顶点9相通
System.out.println("顶点8和顶点9是否相通:"+search.marked(8));
System.out.println("顶点10和顶点9是否相通:"+search.marked(10));
}
}
3.测试结果: