主要思路:
从0开始反推,把没有循环的地方改为-1,只要通信的另一头牛是0或-1就不会进入循环,同时把这个数也改成-1.
C++ 代码
#include<iostream>
using namespace std;
const int N = 1010;
int cow[N];
int n;
int main(){
cin >> n;
int res = 0;
for(int i = 1;i <= n;i ++)
cin >> cow[i];
for(int i = 1;i <= n;i ++)
for(int j = 1;j <= n;j ++)
if(cow[j] == 0 || cow[cow[j]] == -1){
res ++;
cow[j] = -1;
}
cout << res << endl;
return 0;
}