タイトル説明
Nパール粒子の形状と大きさは、その重みが同じではない、同じです。Nは整数で、1からnまでの番号のすべての真珠です。あなたの仕事はビット、すなわちすべての真珠の重量で、ちょうど中間である真珠の重量を見つけることであるカラムの重量真珠(N + 1)/ 2。ここでは、真珠のペアを比較する方法があります。
あなたの真珠の重量を比較するために使用されるスケールを与えるために、我々は再びいくつかのことができ一連の比較を行った後、二つ以上の真珠となっている、我々は確かに離れていくつかのミドル級の真珠を持っていないことができます。
たとえば、次の4つの比較の5つの真珠場合について説明します。
1、パール1つの真珠2の重量比
3重量よりも2、4真珠パール
3、真珠真珠5の重量比
2重量よりも4,4真珠パール
以上の結果から、我々は中間の量を有する真珠を特定することができないが、我々は2,4,5-真珠真珠、真珠及び1,2-の重量比として、真珠真珠1及び4は、中間重みを持っていない可能性を確認することができるが、真珠4より3軽いので、私たちは、これら二つの真珠を削除することができます。
その真珠の合計数の統計は確かではないミドル級プログラムを書きます。
入力形式
最初の行は、2つのスペースで区切られた整数N及びM、1≤N≤99を含み、Nは奇数であり、Mは、比較を行っ真珠の数です。
次の行は、2つの整数xとyの空間によって分離されたM行それぞれを含み、Xは、真珠真珠Yの重量比を表します。
出力フォーマット
唯一のラインは、中間の重量することができない真珠の総数を表す整数を含んでいます。
サンプル入力
5 4
2 1
4 3
5 1
4 2
サンプル出力
2
問題の解決策
我々は、それぞれの関係は、側面として見なければならない、真珠ノードとして見ることができ、それは有向グラフを形成します。私たちは、ノード間の接続をフロイド見つけ、あなたが知っているように、それよりも重量(軽い)を指す任意のノードのために、構築された図の逆を求めることができます。
書式#include <iostreamの> の#define MAX_N 100 使用して名前空間はstdを、INTのN、M。 ブールH [MAX_N] [MAX_N]、L [MAX_N] [MAX_N]。 int型ANS; INT メイン() { CIN >> N >> M。 用(登録をint i = 1 ; I <= M iは++ ) { int型TMP1、TMP2。 CIN >> TMP1 >> TMP2。 H [TMP1] [TMP2] = 1 。 L [TMP2] [TMP1] = 1 。 } ため(登録 int型のk = 1。K <= N。K ++ ) { ため(登録をint i = 1は iが= <N; iは++ ) { ため(登録INT J = 1 ; jは<= nであり、j ++ ) { H [I] [J] | =さh [i]は[K ]&H [k]は[J]。 L [I] [J] | = 1 [I] [K]・L [k]は[J]。 } } } ため(登録をint i = 1 ; iが<= N iが++ ) { int型 CNT_H = 0、CNT_L = 0 。 用(登録INT J = 1 ; J <= N J ++ ) { CNT_H + = H [i]は[J]。 CNT_L + = L [I] [J]。 } の場合(CNT_H> N / 2 || CNT_L> N / 2)年++ 。 } Coutを << 年。 リターン 0 ; }