題意:a喜歡b,b喜歡c,那麼a就喜歡c,每個人都必定喜歡自己,求問被所有人喜歡的人有多少個
輸入格式:n,m分別是人總數和喜歡關係的數目,接下來m行每行兩個數字a,b代表a喜歡b
直接套tarjan演算法縮點模板,記錄數目並最後記錄每個點出度即可即可。
#include#define maxn 10001using
namespace
std;
vector
g[maxn];
stack
s;intn,m;
int dfn[maxn],vis[maxn],low[maxn],color[maxn],num[maxn],colornum=0
,res[maxn],cnt;
//num記錄每個顏色下點的數目,res記錄每個點的出度
void paint(int
x)void tarjan(int
x)
else
if (vis[q]) low[x]=min(low[x],dfn[q]);
}if (low[x]==dfn[x])
paint(x);
}}int
main()
for(int i=1;i<=n;i++)
int ans=0
;
for(int i=1;i<=n;i++)}}
for(int i=1;i<=colornum;i++)
else
if(res[i]==0
) }
cout
return0;
}
洛谷 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 受歡迎的牛
usaco03fall haoi2006 受歡迎的牛 g 洛谷 電腦科學教育新生態 luogu.com.cn 用 tarjan 縮點後,在每個強連通分量中的點都可以互相到達。在 dag 中 如果有大於 1 個出口,則兩個出口之間肯定不能相互到達,所以沒有明星 如果只有乙個出口,則別的點一定可以到出口...
洛谷P2341(受歡迎的牛)題解
題目描述 每頭奶牛都夢想成為牛棚裡的明星。被所有奶牛喜歡的奶牛就是一頭明星奶牛。所有奶 歡b,b喜歡c,那麼a也喜歡c。牛欄裡共有n 頭奶牛,給定一些奶牛之間的愛慕關係,請你 算出有多少頭奶牛可以當明星。輸入輸出格式 輸入格式 第一行 兩個用空格分開的整數 n和m 第二行到第m 1行 每行兩個用空格...