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,表示...