2127。会議に招待される最大の従業員
難易度:hard
トピック:深さ第一検索、グラフ、トポロジーソート
会社が会議を開催しており、n従業員のリストがあり、招待されるのを待っています。彼らは、従業員の任意の数字を席にすることができる大きな円形のテーブルを手配しました。
従業員には0からn -1に番号が付けられています。各従業員にはお気に入りの人がいます。テーブル。従業員のお気に入りの人は、ではありません a 0インデックスinteger配列のお気に入りが与えられます。会議に招待できる従業員。
例1:入力:お気に入り= [2,2,1,2]
output:3
説明:
各従業員は、少なくとも1人の他の従業員のお気に入りの人物であり、会社が招待できる唯一の方法は、すべての従業員を招待することです。 座席配置は、例1に示されている図の配置と同じになります。
従業員0は従業員2と1の間に座りますn ==お気に入り。length
特定の配列のお気に入りから、インデックスIごとにグラフを作成します。これには、お気に入り[i]からiまでの方向性があります。グラフは、サイクルと非環境エッジの鎖の組み合わせになります。さて、私たちがテーブルに座るために従業員を選ぶことができる方法は何ですか?
従業員を選択できる最初の方法は、グラフのサイクルを選択することです。この場合、サイクルに嘘をついていない従業員は、テーブルには決して座ることができないことが証明できます(サイクルの長さは2の場合を除く)。2127に実装しましょう。会議に招待される最大の従業員
説明:
グラフ表現
:
<?php /** * @param Integer[] $favorite * @return Integer */ function maximumInvitations($favorite) { ... ... ... /** * go to ./solution.php */ } // Example usage: $favorites1 = [2, 2, 1, 2]; $favorites2 = [1, 2, 0]; $favorites3 = [3, 0, 1, 4, 1]; echo maximumInvitations($favorites1) . "\n"; // Output: 3 echo maximumInvitations($favorites2) . "\n"; // Output: 3 echo maximumInvitations($favorites3) . "\n"; // Output: 4 ?>
チェーンのトポロジーソート
:: サイクルを検出するために、
従業員が訪問されます。サイクルが見つかったら:result
105
。リポジトリをGithubでスターに提供するか、お気に入りのソーシャルネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味があります!
このようなもっと役立つコンテンツが必要な場合は、お気軽にフォローしてください:
以上が会議に招待できる従業員の最大数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。