洛谷P2341 受歡迎的牛

2022-10-11 06:03:09 字數 1012 閱讀 4129

usaco03fall / haoi2006] 受歡迎的牛 g - 洛谷 | 電腦科學教育新生態 (luogu.com.cn)

用 tarjan 縮點後,在每個強連通分量中的點都可以互相到達。

在 dag 中

如果有大於 1 個出口,則兩個出口之間肯定不能相互到達,所以沒有明星

如果只有乙個出口,則別的點一定可以到出口,所以這個出口的 scc 中所有點都是明星

所以求完 scc 後判斷每個強連通分量的出度即可

#include #include #include #include #include #include using namespace std;

typedef long long ll;

const int n = 1e4 + 10;

int n, m;

vectorg[n];

int tin[n], tim;

int scc_cnt, sz[n], id[n], low[n];

bool in_stk[n];

stackstk;

int dout[n];

void add(int a, int b)

void tarjan(int u)

else if (in_stk[v])

low[u] = min(low[u], tin[v]);

} if (tin[u] == low[u])

while(y != u); }}

int main()

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

if (!tin[i])

tarjan(i);

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

int cnt = 0, sum = 0;

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

}} cout << sum << endl;

return 0;

}

洛谷 P2341 受歡迎的牛

畫一張圖形象一下 tarjan演算法模板,這裡用於縮點 1931 else if col k 3235 36 if low u dfn u 3746 pru.pop 47 48return 49 50signed main 5158 for register int i 1 i n i 5964 6...

洛谷P2341(受歡迎的牛)題解

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

Tarjan 洛谷 P2341 受歡迎的牛

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