したがって、次のような2部グラフのエッジの入力を取り込む必要があります。
6
1 3
1 2
1 5
2 7
2 4
2 9
最初の数はエッジの数です。その後、エッジがリストされます。たとえば、頂点1に複数の異なるエッジがあり、1が接続されているものを追跡したいので、グラフの各頂点に接続されている頂点のリストがあると考えていたので、リンクされたリストの配列を作成しますが、私はそれをどうするかわかりません。私は試した
LinkedList<Integer>[] vertex = new LinkedList[5];
int i = 0, m = 6;
while(i!=m){
int temp = sc.nextInt();
int temp2 = sc.nextInt();
vertex[temp].add(temp2);
i++;
}
しかし、add行でnullpointerexceptionを取得します。
LinkedList<Integer>[] vertex = new LinkedList[5];
int i = 0, m = 6;
while(i!=m){
int temp = sc.nextInt();
int temp2 = sc.nextInt();
// Make sure the list is initialized before adding to it
if (vertex[temp] == null) {
vertex[temp] = new LinkedList<Integer>();
}
vertex[temp].add(temp2);
i++;
}
//initialize array
LinkedList<Integer>[] vertex = new LinkedList[5];
//initialize array elements(objects of LinkedList)
for (int j=0; j<5; j++)
vertex[i]=new LinkedList<Integer>();
int i = 0, m = 6;
while(i!=m){
int temp = sc.nextInt();
int temp2 = sc.nextInt();
vertex[temp].add(temp2);
i++;
}
通常、Javaでは配列は推奨されません。または、これを使用できます:
//initialize array
List<LinkedList<Integer>> vertex = new ArrayList<LinkedList<Integer>>();
//initialize arraylist elements(objects of LinkedList)
for (int j=0; j<5; j++)
vertex.add(new LinkedList<Integer>());