每頭奶牛都夢想成為牛棚裡的明星。被所有奶牛喜歡的奶牛就是一頭明星奶牛。所有奶
歡b,b喜歡c,那麼a也喜歡c。牛欄裡共有n 頭奶牛,給定一些奶牛之間的愛慕關係,請你
算出有多少頭奶牛可以當明星。
輸入格式:
第一行:兩個用空格分開的整數:n和m
第二行到第m + 1行:每行兩個用空格分開的整數:a和b,表示a喜歡b
輸出格式:
第一行:單獨乙個整數,表示明星奶牛的數量
輸入樣例#1:
3 31 22 1
2 3
輸出樣例#1:
1
只有 3 號奶牛可以做明星
【資料範圍】
10%的資料n<=20, m<=50
30%的資料n<=1000,m<=20000
70%的資料n<=5000,m<=50000
100%的資料n<=10000,m<=50000
1 #include 2 #include 3 #include 4 #include 5#define n 10050
6using
namespace
std;
7struct edgee[n*20];8
int head[20*n],dfn[n],low[n],du[n],p[n],tot[n],cnt,num,n,m,k,o;
9bool
bel[n];
10 stackq;
11void insert(int x,int y)
12void tarjan(int
x)13
25while (x!=k);26}
27}28int
main()
2938 o=i;39}
40 printf("%d"
,tot[o]);
41 }
Tarjan縮點 洛谷P2341
傳送門 這題很簡單,不知道為什麼是提高組的題.主要思路就是先tarjan縮點,然後在dag上找出度為0的點,如果只有乙個出度為0的點,那麼這個點就是的大小就是受歡迎的牛的數目。如果有兩個及以上個點的出度為0,那麼不存在明星牛。下面是 include using namespace std const...
洛谷 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...