題目描述
每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數(a,b),表示牛a認為牛b受歡迎。
這種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。
你的任務是求出有多少頭牛被所有的牛認為是受歡迎的。
輸入描述:
第一行兩個數n,m。
接下來m行,每行兩個數a,b,意思是a認為b是受歡迎的(給出的資訊有可能重複,即有可能出現多個a,b)
輸出描述:
乙個數,即有多少頭牛被所有的牛認為是受歡迎的。
示例1輸入
複製3 3
1 22 1
2 3輸出複製1
可以用tarjan縮點,找到出度為0的點。
#include
#define ll long long
using
namespace std;
const
int n =
1e4+10;
vector<
int> g[n]
;int n,m;
int vis[n]
[n],dfn[n]
,low[n]
,num;
int s[n]
,top,cnt[n]
,k,in[n]
,c[n]
,ans[n]
;void
tarjan
(int u)
else
if(in[v]
) low[u]
=min
(low[u]
,dfn[v]);
}if(dfn[u]
==low[u]
)while
(v!=u)
; cnt[k]
=sum;}}
void
build()
}}}int
main()
}for
(int i=
1;i<=n;i++
)build()
;int re=0;
for(
int i=
1;i<=k;i++)}
printf
("%d"
,re)
;return0;
}
HAOI2006 受歡迎的牛
題目 分析 tarjan縮點。最後如果只有乙個出度為0的點,則答案就是這個點包含的牛數,否則為0.一開始最後統計的時候寫了dfs,後來發現是錯誤的,反例 include include include include include using namespace std const int tma...
HAOI2006 受歡迎的牛
這個就是強連通,計算出度為0的點就好 也沒森麼其它好講的啦 提交傳送們 description 每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數 a,b 表示牛a認為牛b受歡迎。這種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。你的任務是求出有多...
HAOI2006 受歡迎的牛
haoi2006 受歡迎的牛 每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數 a,b 表示牛 a 認為牛 b受歡迎。這種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。你的任務是求出有多少頭牛被所有的牛認為是受歡迎的。第1行兩個整數n,m 接下來...