为什么全wa了,求求帮助
  • 板块P1113 杂务
  • 楼主Missnovdoes
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/26 12:37
  • 上次更新2024/1/26 15:41:41
查看原帖
为什么全wa了,求求帮助
1048629
Missnovdoes楼主2024/1/26 12:37
#include <bits/stdc++.h> 
using namespace std;

const int N = 1e5 + 5;
int du[N];
int vis[N];
vector<int> q[N];
int n;
queue<int> a;
int ans = 0;
int ac = 0;

void topsort()
{
    while (!a.empty())
    {
        int acc = a.size();
        ac = 0;
        while (acc--)
        {
            int t = a.front();
            a.pop();
            for (int i = 0; i < q[t].size(); i++)
            {
                du[q[t][i]]--;
                if (du[q[t][i]] == 0)
                {
                    a.push(q[t][i]);
                    ac = max(ac, vis[q[t][i]]);
                    vis[q[t][i]] = 0;
                }
            }
        }
        ans += ac;
    }
}

int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        du[i] = 0;
    }
    for (int i = 1; i <= n; i++)
    {
        int ii, a;
        cin >> ii >> a;
        vis[ii] = a;
        while (1)
        {
            int mid;
            cin >> mid;
            if (mid == 0)
            {
                break;
            }
            q[mid].push_back(i);
            du[i]++;
        }
    }
    for (int i = 1; i <= n; i++)
    {
        if (du[i] == 0)
        {
            a.push(i);
            ans = max(ans, vis[i]);//把入度为0的一网打尽
            vis[i] = 0;
        }
    }
    topsort();
    printf("%d\n", ans);
    return 0;
}
2024/1/26 12:37
加载中...