0
class Graph {
//Map of adjacency lists for each node
Map<int[], LinkedList<int[]>> adj;
public Graph(ArrayList<int[]> nodes) {
adj = new HashMap<int[], LinkedList<int[]>>();
for (int i = 0; i < nodes.size(); ++i) {
adj.put(nodes.get(i), new LinkedList<int[]>());
}
}
public void addNeighbor(int [] a, int [] b) {
adj.get(a).add(b);
}
public LinkedList<int[]> getNeighbors(int a[]) {
return adj.get(a);
}
}
public class Assignment2 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int x= sc.nextInt();
int y= sc.nextInt();
int n= sc.nextInt();
ArrayList<int []> al= new ArrayList<>();
for(int i=0;i<n;i++){
int[] a = new int[2];
a[0]=sc.nextInt();
a[1]=sc.nextInt();
al.add(i, a);
}
int[] s={0,100};
int[] t={x-5,150};
Graph g = new Graph(al);
g.adj.put(s, new LinkedList<int[]>());
g.adj.put(t, new LinkedList<int[]>());
for(int i=0;i<al.size();i++){
int a[]=al.get(i);
for(int j=i;j<al.size();j++){
int b[]=al.get(j);
int r=100;
int value=(int) (Math.pow(a[0]-b[0],2)+Math.pow(a[1]-b[1],2));
if(0<=value && value <=200){
g.addNeighbor(a, b);
g.addNeighbor(b, a);
}
}
}
}
キー値が座標値(x、y)を含む配列であることがわかるように、HashMapを使用したグラフに使用する隣接リストを実装する必要があります。グラフの頂点を表します。隣接リストを実装するHashMap
問題は、新しいネイバーをグラフに追加したい、つまり2つの頂点の間にエッジを追加する場合です。そのネイバーをそれぞれのキーに追加する必要がありますが、そのキーは配列なので...私はそのキーにアクセスするか、そのキーで隣人に追加しますか?私が行ったのは、ハッシュマップに格納されているキー配列に等しい値を持つ新しい配列を作成したものですが、これらの2つは等しくありません。
は、溶液またはarray
であなたのポイントを保管しないでください座標
お寄せいただきありがとうございます... –