[time gate]
【解題思路】
由題可得,受歡迎的奶牛只有可能是圖中唯一的出度為零的強連通分量中的所有奶牛,
所以若出現兩個以上出度為0的強連通分量則不存在明星奶牛,
因為那幾個出度為零的分量的愛慕無法傳遞出去。
那唯一的分量能受到其他分量的愛慕同時在分量內相互傳遞,所以該分量中的所有奶牛都是明星。
【code】
1 #include2#define n 10050
3using
namespace
std;
4struct
edgeedge[n*20];7
int head[20*n],dfn[n],low[n];
8int
du[n],id[n],all[n];
9bool insta[n];int
cnt,tot,gg,n,m;
10 stacks;
11 inline void add(int x,int
y)17
void
in(int &read)
21while(ch>='
0'&&ch<='9')
22 read=x*f;//
可以處理負數的讀入優化23}
24void tarjan(int
x)33
else
if(insta[u])low[x]=min(low[x],dfn[u]);
34 }//
tarjan模板
35int
k;36
if(low[x]==dfn[x])while(x!=k);43}
44}45int
main()
52for(register int i=1;i<=n;i++)
53if(!dfn[i])tarjan(i);
54for(register int w=1;w<=n;w++)60}
61}62int tt=0;63
for(register int i=1;i<=gg;i++)
64if(!du[i])//
兩次出現出度為0直接輸出0
66 tt=i;//
記錄出度為零的分量的邊號67}
68 printf("
%d\n
",all[tt]);
69return0;
70 }
finished!
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 接下來...