最小耗油量,图遍历
import java.util.*;
public class Main{
public static void main(String[] args){
Main test=new Main();
int[] a={1,1,1,9,9,9,9,7,8};
int[] b={2,0,3,1,6,5,4,0,0};
int N=9;
System.out.println(test.solution(a,b,N));
}
private int ret=0;
private Set<Integer>[] graph;
private boolean[] visited;
public int solution(int[] A,int[] B,int N){
ret=0;
int n=N+1;
graph=new Set[n];
for(int i=0;i<n;i++){
graph[i]=new HashSet<>();
}
for(int i=0;i<N;i++){
int u=A[i];
int v=B[i];
graph[u].add(v);
graph[v].add(u);
}
visited=new boolean[n];
dfs(0);
return ret;
}
private int dfs(int index){//返回以index为根的节点个数
visited[index]=true;
int count=1;
for(int neighbor:graph[index]){
if(!visited[neighbor]){
int tmp=dfs(neighbor);
count+=tmp;
ret+=Math.ceil(tmp/5.0);
}
}
return count;
}
}