Luogu P4017 鏈€澶ч鐗╅摼璁℃暟

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu P4017 鏈€澶ч鐗╅摼璁℃暟相关的知识,希望对你有一定的参考价值。

鏍囩锛?a href='http://www.mamicode.com/so/1/max' title='max'>max   efi   define   getc   get   inf   str   pos   ret   

鎶€鏈浘鐗? src=

鎶€鏈浘鐗? src=

鎬濊矾

杩欎釜棰樹竴鐪嬪埌浠€涔堜粠鍏ュ害涓洪浂鐨勭偣鍒板嚭搴︿负闆剁殑鐐癸紝寰堝鏄撴兂鍒皌oposort銆傝繖涓灏辨槸鏈€鍩烘湰鐨則oposort+DAG DP锛屾病鍟ュソ璇寸殑鈥︹€?/p>

涓昏娉ㄦ剰涓€瀹氭槸閬囧埌鍑哄害涓?鐨勭偣锛屼竴鏉¢鐗╅摼鎵嶈兘绠楁槸缁撴潫锛屾墠鑳藉绱姞绛旀銆?/p>

Code

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#define MAXN 5010
#define MAXM 500010
#define MOD 80112002
int n, m, res;
int head[MAXN], cnt;
int in[MAXN], out[MAXN];
int f[MAXN];
struct node{
    int from, nxt, to;
} edge[MAXM];
inline int read(void){
    int f = 1, x = 0;char ch;
    do{ch = getchar();if(ch==鈥?鈥?f = -1;} while (ch < 鈥?鈥?|| ch > 鈥?鈥?;
    do{ x = (x << 1) +(x << 3) + ch - 鈥?鈥?ch = getchar();} while (ch >= 鈥?鈥?&& ch <= 鈥?鈥?;
    return f * x;
}
inline void add_edge(int x,int y){
    ++cnt;
    edge[cnt].nxt = head[x];
    edge[cnt].from = x;
    edge[cnt].to = y;
    head[x] = cnt;
    return;
}
std::queue<int> Q;
inline void _init(void){
    for (int i = 1; i <= n;++i){
        if(!in[i]) Q.push(i), f[i] = 1;
    }
    return;
}
void toposort(void){
    _init();
    while(!Q.empty()){
        int u = Q.front();
        Q.pop();
        for (int i = head[u]; i;i=edge[i].nxt){
            int v = edge[i].to;
            f[v] = (f[v] * 1ll + f[u] * 1ll) % MOD;
            --in[v];
            if(!in[v]){
                if(!out[v])
                    res = (res + f[v]) % MOD;
                else Q.push(v);
            }
        }
    }
    return;
}
int main(void){
    n = read(), m = read();
    for (int i = 1; i <= m;++i){
        int u = read(), v = read();
        add_edge(u, v); 
        ++in[v], ++out[u];
    }
    toposort();
    printf("%d
", res);
    return 0;
}

以上是关于Luogu P4017 鏈€澶ч鐗╅摼璁℃暟的主要内容,如果未能解决你的问题,请参考以下文章

luogu P4017 最大食物链计数 题解

鍙风О鈥滅璋峰吇鑰侀櫌鈥濈殑Oracle澶ф壂鑽″紡瑁佸憳: 婀惧尯鑰佸憳宸?0鍒嗛挓鍐呰鎵湴鍑洪棬

[Luogu] CF557C Arthur and Table

Vue 澶ч噺data鍙妑ules鐨刣ata閫夐」缁撴瀯缁勭粐

P4017 最大食物链计数拓扑排序

鐢宠杩涘害 | 澶ч檰鏈鐢熸柀鑾?Microsoft 鍖椾含瀹炰範Offer