/*
* wal.ccp
*
* Created on: Dec 17, 2022
* Author: A.Mulawa
*/
#include <iostream>
using namespace std;
int main() {
int n;
int t[100];
int r[100];
int w[100][100];
int p[100];
cin >> n;
for (int k = 0; k < n; k++) {
t[k] = 0;
r[k] = 0;
p[k] = 0;
for (int i = 0; i < n; i++) {
w[k][i] = 0;
}
}
t[0] = 1;
int rend = 0;
for (int k = 0; k < n; k++) {
int z;
cin >> z;
// cout << "[" << k + 1 << "] ";
for (int l = 0; l < z; l++) {
int li;
cin >> li;
if (t[k] > 0) {
w[k][l] = li;
t[li - 1]++;
r[k]++;
rend++;
}
// cout << li << " ";
}
// cout << "\n";
}
// cout << "after" << "\n";
// for (int k = 0; k < n; k++) {
// cout << "[" << k + 1 << "] ";
// for (int l = 0; l < n; l++) {
// if (w[k][l])
// cout << w[k][l] << " ";
// }
// cout << "\n";
// }
// cout << "\n";
//
// cout << "rk" << "\n";
// for (int k = 0; k < n; k++) {
// cout << r[k] << " ";
// }
// cout << "\n";
// cout << "pk" << "\n";
// for (int k = 0; k < n; k++) {
// cout << p[k] << " ";
// }
// cout << "rend" << rend << "\n";
int k = 0;
long long s = 1;
while (rend > 0){
if (p[k] + 1 <= r[k]) {
int l = p[k];
p[k]++;
rend--;
// cout << w[k][l] << " ";
k = w[k][l] - 1;
} else {
k = 0;
s++;
// cout << "\n";
// for (int k = 0; k < n; k++) {
// cout << p[k] << " ";
// }
// cout << "rend:" << rend << "\n";
}
if (p[k] + 1 > r[k]) {
p[k] = 0;
rend += r[k];
}
};
cout << s << "\n";
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | /* * wal.ccp * * Created on: Dec 17, 2022 * Author: A.Mulawa */ #include <iostream> using namespace std; int main() { int n; int t[100]; int r[100]; int w[100][100]; int p[100]; cin >> n; for (int k = 0; k < n; k++) { t[k] = 0; r[k] = 0; p[k] = 0; for (int i = 0; i < n; i++) { w[k][i] = 0; } } t[0] = 1; int rend = 0; for (int k = 0; k < n; k++) { int z; cin >> z; // cout << "[" << k + 1 << "] "; for (int l = 0; l < z; l++) { int li; cin >> li; if (t[k] > 0) { w[k][l] = li; t[li - 1]++; r[k]++; rend++; } // cout << li << " "; } // cout << "\n"; } // cout << "after" << "\n"; // for (int k = 0; k < n; k++) { // cout << "[" << k + 1 << "] "; // for (int l = 0; l < n; l++) { // if (w[k][l]) // cout << w[k][l] << " "; // } // cout << "\n"; // } // cout << "\n"; // // cout << "rk" << "\n"; // for (int k = 0; k < n; k++) { // cout << r[k] << " "; // } // cout << "\n"; // cout << "pk" << "\n"; // for (int k = 0; k < n; k++) { // cout << p[k] << " "; // } // cout << "rend" << rend << "\n"; int k = 0; long long s = 1; while (rend > 0){ if (p[k] + 1 <= r[k]) { int l = p[k]; p[k]++; rend--; // cout << w[k][l] << " "; k = w[k][l] - 1; } else { k = 0; s++; // cout << "\n"; // for (int k = 0; k < n; k++) { // cout << p[k] << " "; // } // cout << "rend:" << rend << "\n"; } if (p[k] + 1 > r[k]) { p[k] = 0; rend += r[k]; } }; cout << s << "\n"; return 0; } |
English