問題の説明
カントリー軍
Nの
、セキュリティを向上させるために、部署間で確立される数部門
M
セクタから、即ち、1つのメッセージのみで各パスのパス、パスの
A
セクタに
bの
唯一の通路による に Bが送信されます。情報。場合については、すなわち、リレーを介して送信することができる 情報の缶は、に送信 B、 Bは、に情報を渡すことができる Cその後、 に情報を渡すことができる C。メッセージは、最終的に、複数の通過を介して宛先に到達することができます。 セキュリティの仕事によくやっによるものではなく、すべてが互いの存在を全部門お互いを知っています。情報が2つの部門間で直接または間接的に送信することができた場合にのみ、彼らはお互いにお互いの存在を知っていました。自身が他のセクター内の部門間で伝えるためにどの部門か分かりません。 上記の図は、セクタ4の例を示し、図一方向エッジがパスを表します。セクター1は、すべてのセクタは、他のすべてのセクタの存在のように認識してメッセージ4つのセクタ、セクタ1及びセクタ4を受け取ることができ、すべてのセクターにメッセージを送信することができます。各セクター2とセクター3が互いの存在を知られないように、セクタ2と3の間のいずれかの方法でセクターは、メッセージを送信することができるしません。 今、私はすべてを知っているどのように多くの部門、頼む N部門があります。または、どのように多くの部門が(私を含め)セクタの数がちょうど知っている N
。
。
入力形式
入力の最初の行は二つの整数含ま
N
、
M
それぞれ、セクタ一方向パスの数。1からのすべての部門
Nの
ラベル。
次の M個の 行、各行二つの整数 、 Bは、セクタを表し 、Aセクタに Bが一方向経路を有します。
次の M個の 行、各行二つの整数 、 Bは、セクタを表し 、Aセクタに Bが一方向経路を有します。
出力フォーマット
答えを表す整数を含む出力1行。
サンプル入力
4 4 1 2 1 3 2 4 3 4
サンプル出力
2
サンプル説明
セクター1と4は、他のすべてのセクターの存在を知っています。
評価尺度の例とで合意
実施例中30%,.による評価のために1≤
N
≤10,1≤
M
20≤であり、
評価,. 1≤症例の60%を N ≤100,1≤ M 1000年≤;
評価,. 1≤有する症例の100% N 1000年≤ 、1≤ M 10000≤。
評価,. 1≤症例の60%を N ≤100,1≤ M 1000年≤;
評価,. 1≤有する症例の100% N 1000年≤ 、1≤ M 10000≤。
ACコード:
#include <ビット/ STDC ++ H> 使用して名前空間STDを、 #define N 252000 ベクトル < INT > V [N]。 int型VIS [N]; int型 ARR [ 2500 ] [ 2500 ]; ボイド DFS(int型の、int型T){ VIS [S] = 1 。 ARR [S] [T] = 1 ; ARR [T] [S] = 1 。 用(int型 J = 0 ; J <V [S] .size(); J ++ ){ 場合(VIS [V [S] [J]] == 0 ){ DFS(V [S] [j]は、T); } } } int型のmain(){ int型、N M。 CIN >> N >> M。 以下のために(int型 i = 0 ; iがm <; iは++ ){ int型X、Y。 CIN >> X >> Y。 V [X] .push_back(Y)。 } のための(int型 i = 1 ; iが<= N iが++ ){ memsetの(VIS、0、はsizeof (VIS))。 DFS(I、i)は、 } INT ANS = 0 。 にとって(int型 i = 1 ; iがn = <; iは++ ){ int型フラグ= 1 。 用(INT J = 1 ; J <= nであり、j ++ ){ 場合(ARR [I] [J] == 0 || ARR [J] [I] == 0 ){ フラグ = 0 。 破ります; } } もし(フラグ){ ANS ++ 。 } } COUT << ANS。 リターン 0 ; }