藍橋杯 小朋友崇拜圈

2022-10-10 08:54:15 字數 1530 閱讀 1297

題目描述

班裡 n

nn 個小朋友,每個人都有自己最崇拜的乙個小朋友(也可以是自己)。

在乙個遊戲中,需要小朋友坐乙個圈,每個小朋友都有自己最崇拜的小朋友在他的右手邊。

求滿足條件的圈最大多少人?

小朋友編號為 1,2

,3,⋯

n1,2,3,⋯n

1,2,3,

⋯n。輸入描述

輸入第一行,乙個整數 n(3

<

n<10

5)n(3n(

3<

n<10

5)。接下來一行 n

nn 個整數,由空格分開。

輸出描述

要求輸出乙個整數,表示滿足條件的最大圈的人數。

輸入輸出樣例

示例

輸入

934

2538469

輸出

4
樣例解釋

如下圖所示,崇拜關係用箭頭表示,紅色表示不在圈中。

顯然,最大圈是[2 4 5 3] 構成的圈。

執行限制刷題位址

思路:c++**:

#

include

using

namespace std;

int worship[

100001];

//儲存對應陣列序號的小朋友崇拜的小朋友的序號

int beworshiped[

100001];

//儲存對應陣列序號的小朋友被崇拜的次數

int visit[

100001];

//標記

int ans;

void

dfs(

int n,

int start,

int size)

//n當前小朋友的序號,start起點序號,長度

visit[worship[n]]=

1;dfs(worship[n]

,start,size+1)

;}intmain()

// 測試用,檢視worship[100001]是否輸入了內容

// for(i=1;i<=n;i++)

//

// 測試用,beworshiped[100001],未初始化時預設值為0

// beworshiped[1]++;

// cout

(i=1

;i<=n;i++)}

// 測試用,ans初值為0

cout<

return0;

}

藍橋杯 小朋友崇拜圈

班裡n個小朋友,每個人都有自己最崇拜的乙個小朋友 也可以是自己 在乙個遊戲中,需要小朋友坐乙個圈,每個小朋友都有自己最崇拜的小朋友在他的右手邊。求滿足條件的圈最大多少人?小朋友編號為1,2,3,n 輸入輸入第一行,乙個整數n 3輸出 要求輸出乙個整數,表示滿足條件的最大圈的人數。include in...

藍橋杯2018初賽 小朋友崇拜圈

題目描述 班裡n個小朋友,每個人都有自己最崇拜的乙個小朋友 也可以是自己 在乙個遊戲中,需要小朋友坐乙個圈,每個小朋友都有自己最崇拜的小朋友在他的右手邊。求滿足條件的圈最大多少人?小朋友編號為1,2,3,n 輸入輸入第一行,乙個整數n 3解題思路 題意大意 n條有向邊,找出最大環。我們發現,如果乙個...

藍橋 小朋友崇拜圈 拓撲排序 留環

思路 拓撲排序可以判環 那麼也可以把非環的邊去掉 這樣我們只要成環的所有邊 這樣我們的圖就剩下了很多環 這樣每個環只搜一次然後記錄最大值即可。雖然思路寫起來簡單但是很難想啊!include include include include include include include define ...