Pagini recente » Cod sursa (job #1142407) | Cod sursa (job #2751974) | Cod sursa (job #237807) | Cod sursa (job #684897) | Cod sursa (job #978584)
Cod sursa(job #978584)
#include<fstream>
#include<algorithm>
#include<vector>
#define NMAX 16005
using namespace std;
ifstream f("dosare.in");
ofstream g("dosare.out");
vector < int > G[NMAX];
int N,cost[NMAX];
int acc[NMAX];
bool used[NMAX];
inline void DepthFirstSearch ( int node , int level )
{
cost[node] = level ;
used[node] = true ;
for( vector < int > ::iterator it= G[node].begin() ; it !=G[node].end() ; ++it)
if( !used[*it])
DepthFirstSearch( *it , level +1 );
}
int main ( void )
{
int i ,x ;
long long Answer = 0 ;
f>>N;
for( int i(1) ; i < N ; ++i )
{
f>>x;
G[x].push_back(i+1);
}
DepthFirstSearch( 1 , 1 );
for( int i(1) ; i <= N ; ++i )
{
f>>x;
Answer += x*cost[i];
}
g<<Answer<<"\n";
f.close();
g.close();
return 0;
}