ABCの226C(こちら)で3問程度TLEになってしまうのですが、原因がわかりません。
どのあたりが計算量が多くなってしまっているのか、教えていただけないでしょうか。
以下、コードです。
Java
1import java.util.*; 2 3public class Main { 4 static long ans=0; 5 static List<Integer> list=new ArrayList<Integer>(); 6 static Scanner sc=new Scanner(System.in); 7 static int n=sc.nextInt(); 8 static int t[]=new int[n+1]; 9 static int a[][]=new int[n+1][]; 10 public static void main(String[]args){ 11 for(int i=0;i<n;i++){ 12 t[i+1]=sc.nextInt(); 13 int k=sc.nextInt(); 14 a[i+1]=new int[k]; 15 for(int j=0;j<k;j++){ 16 a[i+1][j]=sc.nextInt(); 17 } 18 } 19 calc(n); 20 ans+=(long)t[n]; 21 System.out.println(ans); 22 } 23 static void calc(int nn){ 24 for(int i=0;i<a[nn].length;i++){ 25 if(list.contains(a[nn][i])==false){ 26 list.add(a[nn][i]); 27 ans+=(long)t[a[nn][i]]; 28 } 29 if(a[nn].length!=0){ 30 calc(a[nn][i]); 31 } 32 } 33 } 34}
ご自身で最大数のデータを用意して各所にログ表示を入れて確認してみれば良いのではないでしょうか。

回答2件
あなたの回答
tips
プレビュー