/* * 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; } |