看不懂哪里错了
查看原帖
看不懂哪里错了
1128181
Evolution333楼主2023/12/13 19:01
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 5010;
const int mod = 80112002;

int h[N],e[N],ne[N],idx;
int d[N],nums[N];
int q[N],hh,tt = -1;
int n,m,ans;

void add(int a, int b)
{
    e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}

void topsort()
{

    for(int i=1;i<=n;i++)
        if(!d[i])
        {
            nums[i] = 1;
            q[++tt] = i;
        }

    while(hh <= tt)
    {
        int t = q[hh++];

        for(int i=h[t];i != -1;i = ne[i])
        {
            int j = e[i];
            nums[j] = (nums[t] + nums[j])%mod;
            if(--d[j] == 0) q[++tt] = j;
        }
    }
}

int main()
{
    scanf("%d%d",&n,&m);
    while(m--)
    {
        int a,b;
        scanf("%d%d",&a,&b);

        add(b,a);
        d[a]++;
    }

    topsort();

    cout<<nums[tt];

    cout<<ans;

    return 0;
}


2023/12/13 19:01
加载中...