bzoj1051(明星奶牛)

2022-05-18 09:54:08 字數 1031 閱讀 9011

這道就是明星奶牛,a了一次又一次了,(⊙o⊙)…(⊙o⊙)…

去年pas就打了不下5次,就是強聯通縮點,然後求出度為0的塊

判斷有多個的話就無解,乙個就輸出塊的大小。

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;78

const

int nn=1e4+7,mm=nn*5;9

10int n,m,time=0,top=0,scc=0

,ans;

11int

dfn[nn],low[nn],instack[nn],q[nn],belong[nn],chu[nn];

12int cnt=0

,head[nn],next[mm],rea[mm],skt[nn];

1314

void add(int u,int

v)15

21void tarjan(int

u)22

33else

if (instack[v]) low[u]=min(low[u],dfn[v]);34}

35if (low[u]==dfn[u])

3646}47

}48void

rebuild()

4957}58

int num=0,x=0;59

for (int i=1;i<=scc;i++)

60if (chu[i]==0) num++,x=i;

61if (num!=1) ans=0;62

else ans=skt[x];

63 printf("%d"

,ans);64}

65int

main()

6675

for (int i=1;i<=n;i++)

76if (dfn[i]==0

) tarjan(i);

77rebuild();

78 }

BZOJ 1051, 受歡迎的牛

傳送門 求可以被除自己以外所有點遍歷到的點的個數。首先強連通分量跑一遍,縮點之後統計每個強連通分量 可以視為乙個點 的出度。如果有多個出度大於0,則無解 否則輸出唯一出度為0的強連通分量內點的個數。include const int n 10005,m 50005 int n,m,x,y,i,j,t...

bzoj1051 受歡迎的牛

每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數 a,b 表示牛a認為牛b受歡迎。這種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。你的任務是求出有多少頭牛被所有的牛認為是受歡迎的。第一行兩個數n,m。接下來m行,每行兩個數a,b,意思是a認為b...

bzoj1051 受歡迎的牛(tarjan)

1051 haoi2006 受歡迎的牛 time limit 10 sec memory limit 162 mb description 每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數 a,b 表示牛a認為牛b受歡迎。這 種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎...