這顯然是一道求強連通分量(scc)的題目。
只要你正常,都知道應該寫tarjan。
然後(假裝會寫tarjan),其實我當然不會。但是求scc還有另乙個演算法。複雜度和tarjan一樣,只不過常數大了點而且不為人所知而已。
藍書和挑戰程式競賽上都有這個演算法,好像叫kosaraju。是不是很拽的感覺。
具體的演算法可以參照我的部落格另一篇文章。重點是這道題就是scc模板題(不敢相信竟然10分鐘一次a了)
code
#include#include#include
using
namespace
std;
const
int n=5005
;vector
a[n],b[n],s;
intf[n],i,n,m,x,y,z,ans,num,c[n],tot,t[n];
inline
void read(int &x)
inline
void dfs(int
k)inline
void rdfs(int
k)int
main()
else
}memset(f,
true,sizeof
(f));
for (i=1;i<=n;++i)
if(f[i]) dfs(i);
memset(f,
true,sizeof
(f));
for (i=s.size()-1;i;--i)
if (f[s[i]]) ++tot,rdfs(s[i]);
for (i=1;i<=tot;++i)
if (t[i]>ans) ans=t[i],num=i;
printf(
"%d\n
",ans);
for (i=1;i<=n;++i)
if (c[i]==num) printf("
%d "
,i);
return0;
}
luoguP1726 上白澤慧音
在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之里的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換乙個能夠聚集最多人數的村莊作為新的教學地點。人間之里由n個村莊 編號為1.n 和m條道路組成,道路分為兩種一種為單向通行的,一種為雙向通行的,分別用1和2來標...
Luogu P1726 上白澤慧音
在幻想鄉,上白澤慧音是以知識淵博聞名的老師。春雪異變導致人間之里的很多道路都被大雪堵塞,使有的學生不能順利地到達慧音所在的村莊。因此慧音決定換乙個能夠聚集最多人數的村莊作為新的教學地點。人間之里由n個村莊 編號為1.n 和m條道路組成,道路分為兩種一種為單向通行的,一種為雙向通行的,分別用1和2來標...
P1726 上白澤慧音
原題鏈結 直到今天 我才知道 幻想鄉還有這麼一位 看起來很可愛的 老師普通的尋找強連通分量 普通的統計最大 普通的輸出 除了我背錯板子了以外 一切都是那麼完美 今天的幻想鄉 也是和平的一天呢 include include include include include include includ...