using namespace std;
const int inf=0x3f3f3f3f;
const int manx=1e5+5;
struct node{
int to,next;
}e[manx];
int tx,x,y,n,a[manx],cnt,head[manx],vis[manx],dp[manx][2];
void add(int x,int y)
{
e[++cnt].next=head[x];
e[cnt].to=y;
head[x]=cnt;
}
void dfs(int x)
{
dp[x][1]+=a[x];
for(int i=head[x];i;i=e[i].next)
{
int to=e[i].to;
dfs(to);
dp[x][0]+=max(dp[to][0],dp[to][1]);
dp[x][1]+=dp[to][0];
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++) {
cin >> x >> y;
add(y,x);
vis[x]++;
}
for (int i = 1; i <= n; i++)
if (vis[i] == 0) {
tx = i;
break;
}
dfs(tx);
int ans = max(dp[tx][0], dp[tx][1]);
cout << ans;
return 0;
}```
第五个点输入输出与洛谷官方一样,却显示Wa掉了,很迷惑