題目傳送門!(luogu)
不難想到,如果有乙個學校作為終端機,那麼跟其處於同乙個強聯通中的所有學校就可以不用作為終端機了。 那麼,問題一也就迎刃而解了:找到所有入度為0的縮點。因為這個學校(強聯通中至少有乙個學校)必須作為終端機,畢竟它收不到別的學校傳來的,只能自給自足。
「任意乙個學校都能作為母雞」?試想一下,任意選取乙個學校作為終端,要使得其餘所有學校都能收到,只能是全圖聯通。因此,找到出度為0和入度為0的縮點的個數取max就ok了。(即從出度為0的點連向入度為0 的點)
(注意**的細節部分呀!)
#include usingnamespace
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的軟體。現在,請...