校園網路 luogu P2812 (又是強聯通)

2022-02-13 09:22:29 字數 1358 閱讀 7233

題目傳送門!(luogu)

不難想到,如果有乙個學校作為終端機,那麼跟其處於同乙個強聯通中的所有學校就可以不用作為終端機了。 那麼,問題一也就迎刃而解了:找到所有入度為0的縮點。因為這個學校(強聯通中至少有乙個學校)必須作為終端機,畢竟它收不到別的學校傳來的,只能自給自足。

「任意乙個學校都能作為母雞」?試想一下,任意選取乙個學校作為終端,要使得其餘所有學校都能收到,只能是全圖聯通。因此,找到出度為0和入度為0的縮點的個數取max就ok了。(即從出度為0的點連向入度為0 的點)

(注意**的細節部分呀!)

#include using

namespace

std;

#define n 5000010

#define orz 0inline

intread()

while

(isdigit(c))

return x *s;

} struct

node t[n];

int f[n];//

日常鄰接表

int stac[n], top = 0

;int

dfn[n], scc[n], low[n];

bool

vis[n];

//tarjan 板子,不多說

intin[n], out[n];//

入度出度

int ans1 = 0, ans2 = 0

;int bian = 0

;inline

void add(int u, int

v)int cac = 0, cnt = 0

;void tarjan(int now)

else

if(vis[v])low[now] =min(low[now], dfn[v]);

}if(dfn[now] ==low[now])

while(cur !=now);

}return;}

intmain()

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

if(!dfn[i]) tarjan(i);//

注意防止有的點漏掉

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

}for(int i = 1;i <= cnt; i++)

if(cnt == 1) printf("

1\n0

"); /*

記得特判呀

*/else printf("

%d\n%d

", ans1, max(ans1, ans2));

return orz; //

%一下ccf求ac

}

校園網路(模擬)

校園網路 時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 南陽理工學院共有m個系,分別編號1 m,其中各個系之間達成有一定的協議,如果某系有新軟體可用時,該系將允許一些其它的系複製並使用該軟體。但該允許關係是單向的,即 a系允許b系使用a的軟體時,b未必一定允許a使用b的軟體...

校園網路(模擬)

校園網路 時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述南陽理工學院共有m個系,分別編號1 m,其中各個系之間達成有一定的協議,如果某系有新軟體可用時,該系將允許一些其它的系複製並使用該軟體。但該允許關係是單向的,即 a系允許b系使用a的軟體時,b未必一定允許a使用b的軟體。...

NYOJ 120 校園網路

時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 南陽理工學院共有m個系,分別編號1 m,其中各個系之間達成有一定的協議,如果某系有新軟體可用時,該系將允許一些其它的系複製並使用該軟體。但該允許關係是單向的,即 a系允許b系使用a的軟體時,b未必一定允許a使用b的軟體。現在,請...