#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,j,m,result,w,tmp;
scanf("%d",&n);
vector <int> G[n+1];
int arr[n+1];
for(i=1;i<=n;i++){
scanf("%d",&m);
G[i].resize(m);
for(j=0;j<m;j++)
scanf("%d",&G[i][j]);
arr[i]=0;
}
tmp=0;
result=0;
do{
w=1;
while(G[w].size()){
if(arr[w]==0)
tmp++;
if((arr[w]+1)%G[w].size()==0)
tmp--;
arr[w]=(arr[w]+1)%G[w].size();
w=G[w][(arr[w]-1+G[w].size())%G[w].size()];
}
result++;
}while(tmp);
printf("%d\n",result);
return 0;
}
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 | #include<bits/stdc++.h> using namespace std; int main(){ int n,i,j,m,result,w,tmp; scanf("%d",&n); vector <int> G[n+1]; int arr[n+1]; for(i=1;i<=n;i++){ scanf("%d",&m); G[i].resize(m); for(j=0;j<m;j++) scanf("%d",&G[i][j]); arr[i]=0; } tmp=0; result=0; do{ w=1; while(G[w].size()){ if(arr[w]==0) tmp++; if((arr[w]+1)%G[w].size()==0) tmp--; arr[w]=(arr[w]+1)%G[w].size(); w=G[w][(arr[w]-1+G[w].size())%G[w].size()]; } result++; }while(tmp); printf("%d\n",result); return 0; } |
English