Tarjan縮點 洛谷P2341

2021-09-01 10:25:33 字數 642 閱讀 8737

傳送門:

這題很簡單,不知道為什麼是提高組的題...

主要思路就是先tarjan縮點,然後在dag上找出度為0的點,如果只有乙個出度為0的點,那麼這個點就是的大小就是受歡迎的牛的數目。如果有兩個及以上個點的出度為0,那麼不存在明星牛。

下面是**:

#include using namespace std;

const int maxn = 1e4+7;

vectorg[maxn];

int low[maxn],dfn[maxn];

int ins[maxn];

int color[maxn],sum[maxn];

int de[maxn];

stacks;

int n,m;

int cnt = 0;

int tot = 0;

void tarjan(int x)

for(int i=1;i<=n;i++) }

for(int i=1;i<=n;i++)

}} int ans = 0;

for(int i=1;i<=tot;i++)

ans = sum[i];

} }cout

}

洛谷 P2341 受歡迎的牛(tarjan縮點)

題目鏈結 思路 因為n是1e4,所以floyd求傳遞閉包肯定是不行的,二維陣列都開不了這麼大,複雜度也不對,然後就學了下tarjan縮點,因為每個強連通分量裡的每個牛肯定是互相喜歡的,所以我們要找強連通分量出度為0的那一團。1.只找到一團出度為0的強連通分量,答案就是那一團的大小。2.找到0或多團強...

洛谷P2341 受歡迎的牛 Tarjan縮點

題意 a喜歡b,b喜歡c,那麼a就喜歡c,每個人都必定喜歡自己,求問被所有人喜歡的人有多少個 輸入格式 n,m分別是人總數和喜歡關係的數目,接下來m行每行兩個數字a,b代表a喜歡b 直接套tarjan演算法縮點模板,記錄數目並最後記錄每個點出度即可即可。include define maxn 100...

Tarjan 洛谷 P2341 受歡迎的牛

每頭奶牛都夢想成為牛棚裡的明星。被所有奶牛喜歡的奶牛就是一頭明星奶牛。所有奶 歡b,b喜歡c,那麼a也喜歡c。牛欄裡共有n 頭奶牛,給定一些奶牛之間的愛慕關係,請你 算出有多少頭奶牛可以當明星。輸入格式 第一行 兩個用空格分開的整數 n和m 第二行到第m 1行 每行兩個用空格分開的整數 a和b,表示...