HAOI2006 受歡迎的牛 (tarjan)

2021-10-20 09:55:11 字數 1180 閱讀 5150

題目描述

每一頭牛的願望就是變成一頭最受歡迎的牛。現在有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 接下來...