P2341 受歡迎的牛

2022-05-24 07:15:10 字數 1020 閱讀 9194

這是一道不是很好想的tarjan模版題(有一點小改動),但是要是沉下心好好思考,是可以發現其中的規律的。

主體部分還是跑tarjan,就是要維護乙個am來記錄這個顏色的強連通分量裡元素的數量,並且不要忘記把u從棧裡刪掉的時候也要修改am……(真難發現啊)

另外要明白,最受歡迎的牛一定就是那個出度為0的那個強連通分量裡的所有點(對於乙個強連通分量中,每個點的出度不算連線這個點和這個強連通分量裡另乙個點的那條邊),若存在兩個出度為0的點,那麼就沒有最受歡迎的牛。

**如下:

#include#include

using

namespace

std;

#define maxn 50005

int dfn[10005],low[10005],st[maxn],co[10005],out[10005],am[10005

];int

head[maxn],to[maxn],nxt[maxn];

intcnt,n,m,num,top,col;

void add(int x,int

y)void tarjan(int

u)

else if(!co[v])

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

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

--top;

am[col]++;

}}int

main()

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

if(!dfn[i]) tarjan(i);

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

for(int j=head[i];j;j=nxt[j])

int limit=0

,now;

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

if(limit>1

)

}printf("%d

",am[now]);

return0;

}

P2341 受歡迎的牛

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

P2341 受歡迎的牛

題面 本題中受歡迎的奶牛只有可能是圖中唯一的出度為零的強連通分量中的所有奶牛,所以若出現兩個以上出度為0的強連通分量則不存在明星奶牛,因為那幾個出度為零的分量的愛慕無法傳遞出去。唯一的分量能受到其他分量的愛慕同時在分量內相互傳遞,所以該分量中的所有奶牛都是明星。code kosaraju inclu...

洛谷 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...