請原諒我,這題實在和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,那麼它的大小就是答案。存...