VioletaBabel

9466번: 텀 프로젝트 본문

백준/백준-C++
9466번: 텀 프로젝트
Beabletoet 2017. 6. 4. 13:22

#include<cstdio>

#include<algorithm>

int student[100001], visit[100001];

bool finish[100001];

void cycle(int x);

int count;

int main()

{

int t, n;

for (scanf("%d", &t); t--; count = 0)

{

std::fill_n(&student[0], 100001, 0);

std::fill_n(&visit[0], 100001, 0);

std::fill_n(&finish[0], 100001, 0);

scanf("%d", &n);

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

scanf("%d", &student[i]);

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

if (visit[i] == 0)

cycle(i);

printf("%d\n", n-count);

}

}

void cycle(int x)

{

if (finish[x] == 1 || visit[x] == -1)

return;

if (visit[x] == 0)

visit[x] = 1;

else if(visit[x] == 1)

{

finish[x] = 1;

++count;

}

cycle(student[x]);

visit[x] = -1;

}

'백준 > 백준-C++' 카테고리의 다른 글

6359번: 만취한 상범  (0) 2017.06.04
9507번: Generations of Tribbles  (0) 2017.06.04
1012번: 유기농 배추  (0) 2017.06.03
1629번: 곱셈  (0) 2017.06.03
1463번: 1로 만들기  (0) 2017.06.03
Comments