ZeroJudge-g308.pB.跳跳布朗尼(Brownie)解題思路
=====================
### 題目連結:https://zerojudge.tw/ShowProblem?problemid=g308
:::warning
- 使用陣列(transinfo)紀錄格子是否曾經過。若<font color=cake>沒有</font>經過,<font color=cake>儲存傳送點資訊</font> ; 若<font color=fart>曾經過</font>,<font color=fart>設為「-1」</font>。
- 使用布林陣列(brownie)來記錄每個格子是否有布朗尼,吃過後將bool值設為「0」([布林值與0,1的關係](https://stackoverflow.com/questions/40009029/in-c-in-bool-true-1-and-false-0)),並以此判斷是否將答案+1。
- 每次結束後紀錄傳送後的位置。
:::
### C++程式碼
```c=
#include<bits/stdc++.h>
using namespace std;
int main(){
bool brownie[1000];
int grid,point,trans,transinfo[1000];
while (cin>>grid>>point){
int sum=0;
for(int i=0;i<grid;i++)
cin>>transinfo[i];
for (int i=0;i<grid;i++)
cin>>brownie[i];
while(transinfo[point]!=-1){
if(brownie[point]){
sum++;
}
trans=transinfo[point];
brownie[point]="0";
transinfo[point]=-1;
point=trans;
}
cout<<sum<<endl;
}
return 0;
}
```