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

2021-10-23 02:28:46 字數 1196 閱讀 1357

思路:拓撲排序可以判環 那麼也可以把非環的邊去掉

這樣我們只要成環的所有邊 這樣我們的圖就剩下了很多環

這樣每個環只搜一次然後記錄最大值即可。

雖然思路寫起來簡單但是很難想啊!!!

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define inf 0x3f3f3f3f

#define sd(a) scanf("%d",&a)

#define sdd(a,b) scanf("%d%d",&a,&b)

#define cl(a,b) memset(a,b,sizeof(a))

#define rep(i,a,n) for(int i=a;i<=n;i++)

#define sddd(a,b,c) scanf("%d%d%d",&a,&b,&c)

#define dbg() printf("aaa\n")

using

namespace std;

const

int maxn=

1e5+10;

int n;

int a[maxn]

;int in[maxn]

;bool con[maxn]

;queue<

int> q;

intmain()

rep(i,

1,n)

while

(!q.

empty()

)}//至此已經去掉所有環之外的點

int maxx=0;

rep(i,

1,n)

if(maxx}printf

("%d\n"

,maxx)

;return0;

}

題目描述

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

在乙個遊戲中,需要小朋友坐乙個圈,

每個小朋友都有自己最崇拜的小朋友在他的右手邊。

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

小朋友編號為1,2,3,…n

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

3 4 2 5 3 8 4 6 9

樣例輸出

藍橋杯 小朋友崇拜圈

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

藍橋杯 小朋友崇拜圈

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

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

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