forked from NASU41/AtCoderLibraryForJava
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGraphBuilder.java
More file actions
31 lines (30 loc) · 1.19 KB
/
GraphBuilder.java
File metadata and controls
31 lines (30 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class GraphBuilder{
public static int[][] makeGraph(int NumberOfNodes, int NumberOfEdges, int[] from, int[] to, boolean undirected){
int[][] graph = new int[NumberOfNodes][];
int[] outdegree = new int[NumberOfNodes];
for(int i = 0; i< NumberOfEdges; i++){
outdegree[from[i]]++;
if(undirected)outdegree[to[i]]++;
}
for(int i = 0; i< NumberOfNodes; i++)graph[i] = new int[outdegree[i]];
for(int i = 0; i< NumberOfEdges; i++){
graph[from[i]][--outdegree[from[i]]] = to[i];
if(undirected)graph[to[i]][--outdegree[to[i]]] = from[i];
}
return graph;
}
public static int[][][] makeGraphWithEdgeInfo(int NumberOfNodes, int NumberOfEdges, int[] from, int[] to, boolean undirected){
int[][][] graph = new int[NumberOfNodes][][];
int[] outdegree = new int[NumberOfNodes];
for(int i = 0; i< NumberOfEdges; i++){
outdegree[from[i]]++;
if(undirected)outdegree[to[i]]++;
}
for(int i = 0; i< NumberOfNodes; i++)graph[i] = new int[outdegree[i]][];
for(int i = 0; i< NumberOfEdges; i++){
graph[from[i]][--outdegree[from[i]]] = new int[]{to[i], i, 0};
if(undirected)graph[to[i]][--outdegree[to[i]]] = new int[]{from[i], i, 1};
}
return graph;
}
}