2019年1月22日 星期二

APCS c291:小群體

原題請見 APCS大學程式設計先修檢測 (2017/03/04 實作第二題)
以下為通過高中生程式解題系統 AC (Accepted) 的 C 語言程式參考解答
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n;
int count = 0 ;
int f[50001],v[50001];

    scanf("%d",&n);
    for( int i = 0 ; i < n ; i++ ){
        scanf("%d",&f[i]);
        v[i] = 0 ;
    }

    for (int i = 0 ; i < n ; i++)
    {

        if(v[i] == 0){
            if(f[i] == i){
                count++;
                v[i] = 1 ;

            }else{
            v[i] = 1 ;
            int next = f[i];
                while(v[next] == 0){
                v[next] = 1;
                next = f[next] ;
                }
                count++;

            }
        }
    }
    printf("%d",count);
    return 0;
}

沒有留言:

張貼留言