第五个点的疑惑
查看原帖
第五个点的疑惑
418900
像晚风楼主2021/5/12 10:17
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掉了,很迷惑
2021/5/12 10:17
加载中...