Submission #1779877
Source Code Expand
using System; using System.Text; using System.Collections.Generic; class Solve{ public Solve(){} ReadData re; StringBuilder sb; List<int>[] G; string S; int N; int[] child; int[] depth; int[] depth2; int[] depthR; int fav; public static int Main(){ new Solve().Run(); return 0; } void Run(){ re = new ReadData(); sb = new StringBuilder(); Calc(); Console.Write(sb.ToString()); } void Calc(){ N = re.i(); { int[] fv = new int[2*N-2]; int[] tv = new int[2*N-2]; int cv = 0; int dv = N; for(int i=0;i<N-1;i++){ int ai = re.i()-1; int bi = re.i()-1; fv[cv] = ai; tv[cv] = dv; cv++; fv[cv] = dv; tv[cv] = bi; cv++; dv++; } N = 2*N-1; G = re.g(N,fv,tv); } S = re.s(); child = new int[N]; depth = new int[N]; depth2 = new int[N]; depthR = new int[N]; GetDepth(0,-1); GetDepthR(0,-1,0); GetChild(0,-1); fav = child[0]; long count = dfs(0,-1); sb.Append(count+"\n"); } long dfs(int v,int f){ int min = child[v] == fav ? 1000000000 : depthR[v]; int max = Math.Min(Math.Max(depth2[v],depthR[v]),depth[v]); long count = 0; for(int i=0;i<G[v].Count;i++){ int t = G[v][i]; if(t != f){ count += dfs(t,v); if(child[t] > 0){ min = Math.Min(min,depth[t]+1); } } } if(v < (N+1)/2 && S[v] == '1'){ min = 0; } if(max >= min){ count += (max-min)/2+1; } return count; } void GetDepth(int v,int f){ int max1 = 0; int max2 = 0; for(int i=0;i<G[v].Count;i++){ int t = G[v][i]; if(t != f){ GetDepth(t,v); int val = depth[t]+1; if(val > max1){ max2 = max1; max1 = val; } else if(val > max2){ max2 = val; } } } depth[v] = max1; depth2[v] = max2; } void GetDepthR(int v,int f,int d){ for(int i=0;i<G[v].Count;i++){ int t = G[v][i]; if(t != f){ int val = depth[v] == depth[t]+1 ? depth2[v]+1 : depth[v]+1; val = Math.Max(val,d+1); GetDepthR(t,v,val); } } depthR[v] = d; } void GetChild(int v,int f){ int c = 0; for(int i=0;i<G[v].Count;i++){ int t = G[v][i]; if(t != f){ GetChild(t,v); c += child[t]; } } if(v < (N+1)/2 && S[v] == '1'){ c++; } child[v] = c; } } class ReadData{ string[] str; int counter; public ReadData(){ counter = 0; } public string s(){ if(counter == 0){ str = Console.ReadLine().Split(' '); counter = str.Length; } counter--; return str[str.Length-counter-1]; } public int i(){ return int.Parse(s()); } public long l(){ return long.Parse(s()); } public double d(){ return double.Parse(s()); } public int[] ia(int N){ int[] ans = new int[N]; for(int j=0;j<N;j++){ ans[j] = i(); } return ans; } public int[] ia(){ str = Console.ReadLine().Split(' '); counter = 0; int[] ans = new int[str.Length]; for(int j=0;j<str.Length;j++){ ans[j] = int.Parse(str[j]); } return ans; } public long[] la(int N){ long[] ans = new long[N]; for(int j=0;j<N;j++){ ans[j] = l(); } return ans; } public long[] la(){ str = Console.ReadLine().Split(' '); counter = 0; long[] ans = new long[str.Length]; for(int j=0;j<str.Length;j++){ ans[j] = long.Parse(str[j]); } return ans; } public double[] da(int N){ double[] ans = new double[N]; for(int j=0;j<N;j++){ ans[j] = d(); } return ans; } public double[] da(){ str = Console.ReadLine().Split(' '); counter = 0; double[] ans = new double[str.Length]; for(int j=0;j<str.Length;j++){ ans[j] = double.Parse(str[j]); } return ans; } public List<int>[] g(int N,int[] f,int[] t){ List<int>[] ans = new List<int>[N]; for(int j=0;j<N;j++){ ans[j] = new List<int>(); } for(int j=0;j<f.Length;j++){ ans[f[j]].Add(t[j]); ans[t[j]].Add(f[j]); } return ans; } public List<int>[] g(int N,int M){ List<int>[] ans = new List<int>[N]; for(int j=0;j<N;j++){ ans[j] = new List<int>(); } for(int j=0;j<M;j++){ int f = i()-1; int t = i()-1; ans[f].Add(t); ans[t].Add(f); } return ans; } public List<int>[] g(){ int N = i(); int M = i(); List<int>[] ans = new List<int>[N]; for(int j=0;j<N;j++){ ans[j] = new List<int>(); } for(int j=0;j<M;j++){ int f = i()-1; int t = i()-1; ans[f].Add(t); ans[t].Add(f); } return ans; } } public static class Define{ public const long mod = 1000000007; } public static class Debug{ public static void Print(double[,,] k){ for(int i=0;i<k.GetLength(0);i++){ for(int j=0;j<k.GetLength(1);j++){ for(int l=0;l<k.GetLength(2);l++){ Console.Write(k[i,j,l]+" "); } Console.WriteLine(); } Console.WriteLine(); } } public static void Print(double[,] k){ for(int i=0;i<k.GetLength(0);i++){ for(int j=0;j<k.GetLength(1);j++){ Console.Write(k[i,j]+" "); } Console.WriteLine(); } } public static void Print(double[] k){ for(int i=0;i<k.Length;i++){ Console.WriteLine(k[i]); } } public static void Print(long[,,] k){ for(int i=0;i<k.GetLength(0);i++){ for(int j=0;j<k.GetLength(1);j++){ for(int l=0;l<k.GetLength(2);l++){ Console.Write(k[i,j,l]+" "); } Console.WriteLine(); } Console.WriteLine(); } } public static void Print(long[,] k){ for(int i=0;i<k.GetLength(0);i++){ for(int j=0;j<k.GetLength(1);j++){ Console.Write(k[i,j]+" "); } Console.WriteLine(); } } public static void Print(long[] k){ for(int i=0;i<k.Length;i++){ Console.WriteLine(k[i]); } } public static void Print(int[,,] k){ for(int i=0;i<k.GetLength(0);i++){ for(int j=0;j<k.GetLength(1);j++){ for(int l=0;l<k.GetLength(2);l++){ Console.Write(k[i,j,l]+" "); } Console.WriteLine(); } Console.WriteLine(); } } public static void Print(int[,] k){ for(int i=0;i<k.GetLength(0);i++){ for(int j=0;j<k.GetLength(1);j++){ Console.Write(k[i,j]+" "); } Console.WriteLine(); } } public static void Print(int[] k){ for(int i=0;i<k.Length;i++){ Console.WriteLine(k[i]); } } }
Submission Info
Submission Time | |
---|---|
Task | F - Black Radius |
User | leign |
Language | C# (Mono 4.6.2.0) |
Score | 1900 |
Code Size | 8403 Byte |
Status | AC |
Exec Time | 1334 ms |
Memory | 89320 KB |
Judge Result
Set Name | Sample | Subtask | All | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1300 / 1300 | 600 / 600 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | 0_00.txt, 0_01.txt, 0_02.txt |
Subtask | 0_01.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt |
All | 0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 2_00.txt, 2_01.txt, 2_02.txt, 2_03.txt, 2_04.txt, 2_05.txt, 2_06.txt, 2_07.txt, 2_08.txt, 2_09.txt, 2_10.txt, 2_11.txt, 2_12.txt, 2_13.txt, 2_14.txt, 2_15.txt, 2_16.txt, 2_17.txt, 2_18.txt, 2_19.txt, 2_20.txt, 2_21.txt, 2_22.txt, 2_23.txt, 2_24.txt, 2_25.txt, 2_26.txt, 2_27.txt, 2_28.txt, 2_29.txt, 2_30.txt, 2_31.txt, 2_32.txt, 2_33.txt, 2_34.txt, 2_35.txt, 2_36.txt, 2_37.txt, 2_38.txt, 2_39.txt, 2_40.txt, 2_41.txt, 2_42.txt, 2_43.txt, 2_44.txt, 2_45.txt, 2_46.txt, 2_47.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_00.txt | AC | 22 ms | 9172 KB |
0_01.txt | AC | 22 ms | 9172 KB |
0_02.txt | AC | 22 ms | 9172 KB |
1_00.txt | AC | 22 ms | 11220 KB |
1_01.txt | AC | 947 ms | 88292 KB |
1_02.txt | AC | 1334 ms | 79716 KB |
1_03.txt | AC | 840 ms | 66532 KB |
1_04.txt | AC | 731 ms | 66952 KB |
1_05.txt | AC | 598 ms | 63176 KB |
1_06.txt | AC | 758 ms | 65380 KB |
1_07.txt | AC | 777 ms | 63336 KB |
1_08.txt | AC | 837 ms | 69220 KB |
1_09.txt | AC | 814 ms | 74604 KB |
1_10.txt | AC | 852 ms | 73992 KB |
1_11.txt | AC | 908 ms | 87448 KB |
1_12.txt | AC | 799 ms | 68908 KB |
1_13.txt | AC | 801 ms | 75476 KB |
1_14.txt | AC | 807 ms | 69204 KB |
1_15.txt | AC | 760 ms | 67376 KB |
1_16.txt | AC | 835 ms | 68936 KB |
1_17.txt | AC | 807 ms | 73812 KB |
1_18.txt | AC | 772 ms | 66264 KB |
1_19.txt | AC | 747 ms | 62424 KB |
1_20.txt | AC | 770 ms | 61968 KB |
1_21.txt | AC | 824 ms | 63964 KB |
1_22.txt | AC | 706 ms | 69028 KB |
1_23.txt | AC | 769 ms | 65068 KB |
1_24.txt | AC | 806 ms | 66408 KB |
1_25.txt | AC | 707 ms | 65392 KB |
1_26.txt | AC | 711 ms | 62632 KB |
1_27.txt | AC | 743 ms | 64916 KB |
1_28.txt | AC | 674 ms | 63536 KB |
1_29.txt | AC | 733 ms | 72256 KB |
2_00.txt | AC | 23 ms | 11220 KB |
2_01.txt | AC | 945 ms | 89320 KB |
2_02.txt | AC | 953 ms | 85600 KB |
2_03.txt | AC | 946 ms | 82404 KB |
2_04.txt | AC | 829 ms | 75876 KB |
2_05.txt | AC | 874 ms | 74208 KB |
2_06.txt | AC | 875 ms | 80100 KB |
2_07.txt | AC | 874 ms | 64484 KB |
2_08.txt | AC | 849 ms | 64484 KB |
2_09.txt | AC | 817 ms | 62432 KB |
2_10.txt | AC | 717 ms | 64976 KB |
2_11.txt | AC | 666 ms | 62928 KB |
2_12.txt | AC | 699 ms | 64976 KB |
2_13.txt | AC | 619 ms | 65220 KB |
2_14.txt | AC | 601 ms | 65136 KB |
2_15.txt | AC | 578 ms | 67312 KB |
2_16.txt | AC | 812 ms | 67300 KB |
2_17.txt | AC | 746 ms | 63332 KB |
2_18.txt | AC | 767 ms | 65248 KB |
2_19.txt | AC | 827 ms | 65376 KB |
2_20.txt | AC | 822 ms | 67424 KB |
2_21.txt | AC | 848 ms | 65380 KB |
2_22.txt | AC | 793 ms | 67040 KB |
2_23.txt | AC | 787 ms | 68196 KB |
2_24.txt | AC | 786 ms | 65764 KB |
2_25.txt | AC | 857 ms | 77280 KB |
2_26.txt | AC | 856 ms | 77028 KB |
2_27.txt | AC | 830 ms | 79332 KB |
2_28.txt | AC | 818 ms | 71752 KB |
2_29.txt | AC | 946 ms | 88368 KB |
2_30.txt | AC | 881 ms | 78920 KB |
2_31.txt | AC | 840 ms | 73788 KB |
2_32.txt | AC | 815 ms | 67936 KB |
2_33.txt | AC | 777 ms | 73904 KB |
2_34.txt | AC | 793 ms | 70792 KB |
2_35.txt | AC | 860 ms | 77800 KB |
2_36.txt | AC | 789 ms | 63964 KB |
2_37.txt | AC | 814 ms | 64352 KB |
2_38.txt | AC | 747 ms | 68692 KB |
2_39.txt | AC | 811 ms | 62640 KB |
2_40.txt | AC | 721 ms | 62340 KB |
2_41.txt | AC | 797 ms | 64768 KB |
2_42.txt | AC | 729 ms | 61948 KB |
2_43.txt | AC | 841 ms | 76060 KB |
2_44.txt | AC | 699 ms | 68788 KB |
2_45.txt | AC | 627 ms | 66912 KB |
2_46.txt | AC | 641 ms | 63324 KB |
2_47.txt | AC | 748 ms | 71176 KB |