Translate

Views

Monday, May 30, 2022

Solution Kattis - Mravi


https://open.kattis.com/problems/mravi

Function f is the solution of the problem. 

Don't worry if you don't know C# because it's quite similar to C++, Java


Submission

IDDATEPROBLEMSTATUSCPULANG
TEST CASES
900917501:29:16MraviAccepted0.03 sC#

Submission contains 1 file: download zip archive

FILENAMEFILESIZESHA-1 SUM
mravi.cs1424 bytes3cd94e9e7b40579adea564c42b242396479ad98ddownload

Edit and resubmit this submission.

mravi.cs

using System;
public static class MathD
{
public static double Max(double a, double b)
{
if (a > b) return a;
return b;
}
}
class Program{
const int N=1001;
int n, u, v, x, t;
bool[,] a= new bool[N,N];
double[] b = new double[N];
int[] c= new int[N], k= new int[N];
double f(int u){
if (k[u] != -1) return c[u] == 0 ? k[u] / b[u] : Math.Sqrt(k[u]) / b[u];
double res = 0;
for(int v=1; v<=n; v++){
if (a[u,v]==true){
res= MathD.Max(res, c[u]==0 ? f(v)/b[u] : Math.Sqrt(f(v))/b[u]);
}
}
return res;
}
Program(){
n= Int32.Parse(Console.ReadLine());
for(int i=1; i<n; i++){
string[] s= Console.ReadLine().Split(" ");
u= int.Parse(s[0]);
v= int.Parse(s[1]);
x= int.Parse(s[2]);
t= int.Parse(s[3]);
a[u,v]= true;
b[v]= (double)x/100;
c[v]= t;
}
string[] st= Console.ReadLine().Split(" ");
for(int i=1; i<=n; i++)
k[i]= Convert.ToInt32(st[i-1]);
b[1]= 1;
c[1]= 0;
Console.Write(f(1));
}
static void Main(string[] args){
new Program();
}
}