BZOJ1051 HAOI2006受歡迎的牛

2021-07-09 14:48:19 字數 1952 閱讀 8853

請原諒我,這題實在和bzoj1093太像 了,copy過來改一改,很多沒有用,然後一起嘿嘿嘿~

#include

#include

#include

#include

#include

#include

#include

using namespace std;

typedef long long ll;

inline ll read()

stackzhan;

ll edge[1000005];

ll z[1000005];

ll last[100005];

ll low[100005];

ll dfn[100005];

ll pzhan[100005];

ll visit[100005];

ll mod;

ll n,m;

ll s;

////

////

////

////

////

////

ll n2;

ll ji;

ll goal[100005];

ll dj[100005];

ll zhi[100005];

ll back[100005];

////

////

////

////

///////

ll ji2;

ll edge2[1000005];

ll z2[1000005];

ll last2[100005];

ll dq[100005];

ll rd[100005];

ll kp[100005];

ll sign;///

////

////

////

////

////

/ll edge3[1000005];

ll z3[1000005];

ll last3[100005];///

////

////

////

////

//ll maxn;

ll sum;

ll zl[100005];

ll maxx;

ll summ;

ll pd[100005];

ll ss[100005];

inline void tarjan(ll d)//強連通分量

else

if(pzhan[v]==1)

}if(dfn[d]==low[d])//規劃舊點集和新點集

++dq[n2];

goal[g]=n2;

dj[++ji]=g;

zhi[ji]=back[n2];

back[n2]=ji;

pzhan[g]=0;zhan.pop();

}return;

}void kpsort()//拓撲排序

}return;

}void dp()//拓撲圖動態規劃

else

if(dq[v]>maxx)

}dq[d]+=maxx;

zl[d]=summ;

if(dq[d]==maxn)

else

if(dq[d]>maxn)

}return;

}int main()

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

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

for(int i=1;i<=n2;++i)//建立新圖的邊 }}

}for(int i=1;i<=n2;++i)//將入度為0的點進入拓撲序列

}kpsort();//拓撲排序

dp();//動態規劃

cout0;}

bzoj1051 HAOI2006 受歡迎的牛

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

bzoj1051 HAOI2006 受歡迎的牛

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

bzoj1051 HAOI2006 受歡迎的牛

題目 哇,csdn部落格 改版了,還有什麼優質博主搶先體驗版,手賤點了試用,哇塞,好。醜。不過據說全部都要改,這樣我的心情就好了許多。再來看這道題,比較經典的tarjan縮點題。先用tarjan縮點,點內每乙個小點都能互相到達。大點之間建有向邊,如果只存在乙個大點的出度為0,那麼它的大小就是答案。存...