傳送門:
這題很簡單,不知道為什麼是提高組的題...
主要思路就是先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,表示...