#include <iostream> using namespace std; short platforms[101][101]; bool endCondition(short counters[], short len) { for(int i=1; i<=len; i++){ if (counters[i] != 1) return false; } return true; } int main() { int platformNo; cin >> platformNo; for (int i=1; i<=platformNo; i++) { int beltsNo; cin >> beltsNo; platforms[i][0] = beltsNo; for (int j=1; j<=beltsNo; j++) cin >> platforms[i][j]; } short counters[101]; for(int i=0; i <= platformNo; i++) counters[i] = 1; // for (int i=1; i<=platformNo; i++) { // cout << "platform " << i << ":"; // for (int j=0; j<=platforms[i][0]; j++){ // cout << platforms[i][j]; // } // cout<<endl; // } long long turn = 0; do { bool caseFinished = false; int currentPlatform = 1; //cerr<<"["<<turn<<"] "; while(!caseFinished) { //cerr << currentPlatform << "->"; if(platforms[0] == 0) { caseFinished = true; break; } short nextPlatform = platforms[currentPlatform][counters[currentPlatform]]; counters[currentPlatform]++; if (counters[currentPlatform] > platforms[currentPlatform][0]) counters[currentPlatform] = 1; if (nextPlatform == 0) caseFinished = true; currentPlatform = nextPlatform; } //cerr << endl; turn++; } while (!endCondition(counters, platformNo)); cout << turn << endl; }
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 | #include <iostream> using namespace std; short platforms[101][101]; bool endCondition(short counters[], short len) { for(int i=1; i<=len; i++){ if (counters[i] != 1) return false; } return true; } int main() { int platformNo; cin >> platformNo; for (int i=1; i<=platformNo; i++) { int beltsNo; cin >> beltsNo; platforms[i][0] = beltsNo; for (int j=1; j<=beltsNo; j++) cin >> platforms[i][j]; } short counters[101]; for(int i=0; i <= platformNo; i++) counters[i] = 1; // for (int i=1; i<=platformNo; i++) { // cout << "platform " << i << ":"; // for (int j=0; j<=platforms[i][0]; j++){ // cout << platforms[i][j]; // } // cout<<endl; // } long long turn = 0; do { bool caseFinished = false; int currentPlatform = 1; //cerr<<"["<<turn<<"] "; while(!caseFinished) { //cerr << currentPlatform << "->"; if(platforms[0] == 0) { caseFinished = true; break; } short nextPlatform = platforms[currentPlatform][counters[currentPlatform]]; counters[currentPlatform]++; if (counters[currentPlatform] > platforms[currentPlatform][0]) counters[currentPlatform] = 1; if (nextPlatform == 0) caseFinished = true; currentPlatform = nextPlatform; } //cerr << endl; turn++; } while (!endCondition(counters, platformNo)); cout << turn << endl; } |