import java.util.*;
public class Routers {
private static final int SIZE=13;
private int dis[]=new int[SIZE];
private boolean[] vis=new boolean[SIZE];
private int path[]=new int [SIZE];
private HashMap<Integer,String>IndexToRouter =new HashMap<>();
private HashMap<String,Integer>RouterToIndex=new HashMap<>();
public Routers(){
for(int i=0;i<SIZE;i++){
String Rx="R"+String.valueOf(i);
RouterToIndex.put(Rx, i);
IndexToRouter.put(i,Rx);
}
}
private static int[][] G={
{0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,1,0,0,0,1,0,0,0,0,0,0},
{0,1,0,1,0,0,1,0,1,0,0,0,0},
{0,0,1,0,1,0,0,0,0,0,0,0,0},
{0,0,0,1,0,0,1,0,0,0,0,0,0},
{0,0,0,0,0,0,1,0,0,1,0,0,0},
{0,1,1,0,1,1,0,0,0,0,0,1,0},
{0,0,0,0,0,0,0,0,1,1,0,1,0},
{0,0,1,0,0,0,0,1,0,0,0,1,0},
{0,0,0,0,0,1,0,1,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,1,1,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,0,0},
};
public void pathSearch(String start,String end){
int st=RouterToIndex.get(start);
int ed=RouterToIndex.get(end);
for(int i=0;i<SIZE;i++)
{
vis[i]=false;
dis[i]=0x3f3f3f3f;
path[i]=i;
}
Queue<Integer> q=new LinkedList<Integer>();
q.offer(st);
vis[st]=true;
dis[st]=0;
while(!q.isEmpty())
{
int u=q.poll();
if(u==ed)break;
for(int v=1;v<SIZE;v++)
{
if(!vis[v]&&G[u][v]==1)
{
dis[v]=dis[u]+1;
q.offer(v);
vis[v]=true;
path[v]=u;
}
}
}
}
public void print_path(String start,String end)
{
int st=RouterToIndex.get(start);
int ed=RouterToIndex.get(end);
if(dis[ed]==0x3f3f3f3f)
{
System.out.println("Error!the Router are not connected!");
return;
}
DFS_path(st,path[ed]);
System.out.println(end);
}
private void DFS_path(int st,int ed)
{
if(ed!=st)
{
DFS_path(st,path[ed]);
}
System.out.print(IndexToRouter.get(ed)+"->");
}
public int get_dis(String end)
{
return dis[RouterToIndex.get(end)];
}
}
Routers
于 2024-06-18 22:43:00 首次发布