(2)求一个有向图中有多少个环并输出环的总数。
输入格式: 第 1 行为 n,第 2 行为 n 个点的编号。
输出格式: 输出有向图的环的总数。
输入样例: 10
7 1 4 3 2 5 9 8 0 6
输出样例: 6
样例说明: a[0]=7,a[7]=8,a[8]=0,{0,7,8}构成一个环;
a[1]=1,{1}构成一个环;
a[2]=4,a[4]=2,{2,4}构成一个环;
a[3]=3,{3}构成一个环;a[5]=5,{5}构成一个环;
a[6]=9,a[9]=6,{6,9}构成一个环。
该有向图共有 6 个环。
01 #include<bits/stdc++.h>
02 using namespace std;
03 int n,point[100];
04 bool vis[100];
05 int main()
06 {
07 int cnt;
08 scanf("%d",&n);
09 for(int i = 0; i < n; ++i)
10 {
11 scanf("%d",①);
12 ②;
13 }
14 cnt = 0;
15 for(int i = 0; i < n; ++i)
16 {
17 if(③)
18 {
19 for(int j = i; !vis[j]; ④)
20 {
21 vis[j] = true;
22 }
23 ⑤;
24 }
25 }
26 printf("%d",cnt);
27 return 0;
28 }