#include <iostream> #include<string> using namespace std; int main() { int przypadki =0; cin >> przypadki; for(int i = 0; i < przypadki ; i++) { int ilosc = 0 ; cin >> ilosc; string graf; cin >> graf; string szukany_graf; cin >> szukany_graf; int ilosc_polaczen[ilosc-1]; for(int i = 0; i<ilosc-1;i++) { ilosc_polaczen[i] = 0; } for(int i = 0; i < ilosc-1;i++) { int wierz1; int wierz2; cin >> wierz1 >> wierz2; ilosc_polaczen[wierz1-1] +=1; ilosc_polaczen[wierz2-1] += 1; } int ilosc_1_w_graf = 0;int ilosc_0_w_graf = 0; int ilosc_1_w_szukanym = 0;int ilosc_0_w_szukanym = 0; for(int i = 1; i<ilosc; i++) { if(graf[i]!=graf[i-1]) { if(graf[i-1]==0) { ilosc_0_w_graf +=1; } else { ilosc_1_w_graf +=1; } } } for(int i = 1; i<ilosc; i++) { if(szukany_graf[i]!=szukany_graf[i-1]) { if(graf[i-1]==0) { ilosc_0_w_szukanym +=1; } else { ilosc_1_w_szukanym +=1; } } } int jestesmy_w_domu = 0; for(int i = 0; i < ilosc-1;i++) { if(ilosc_polaczen[i]>=3) { jestesmy_w_domu = 1; } } int czerwone = 0; int czarne = 0; for(int i = 0; i < ilosc;i++) { if(graf[i]=='1') { czerwone +=1; } else { czarne +=1; } } if(jestesmy_w_domu ==1) { if(czerwone > 0 and czarne > 0) { cout << "TAK"<< endl; continue; } else { if (graf==szukany_graf) { cout << "TAK" << endl; continue; } else { cout << "NIE" << endl; continue; } } } else { if(czerwone == 0 or czarne == 0) { if (graf==szukany_graf) { cout << "TAK" << endl; continue; } else { cout << "NIE" << endl; continue; } } else { if(ilosc_0_w_graf<ilosc_0_w_szukanym or ilosc_1_w_graf < ilosc_1_w_szukanym) { cout << "NIE" << endl; continue; } else if(ilosc_0_w_graf==ilosc_0_w_szukanym or ilosc_1_w_graf == ilosc_1_w_szukanym) { if(graf[0]==szukany_graf[0] and graf[ilosc-1] ==szukany_graf[ilosc-1]) { cout << "TAK "<< endl; continue; } else { cout << "NIE" << endl; continue; } } else { cout << "TAK" << endl; continue; } } } } 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | #include <iostream> #include<string> using namespace std; int main() { int przypadki =0; cin >> przypadki; for(int i = 0; i < przypadki ; i++) { int ilosc = 0 ; cin >> ilosc; string graf; cin >> graf; string szukany_graf; cin >> szukany_graf; int ilosc_polaczen[ilosc-1]; for(int i = 0; i<ilosc-1;i++) { ilosc_polaczen[i] = 0; } for(int i = 0; i < ilosc-1;i++) { int wierz1; int wierz2; cin >> wierz1 >> wierz2; ilosc_polaczen[wierz1-1] +=1; ilosc_polaczen[wierz2-1] += 1; } int ilosc_1_w_graf = 0;int ilosc_0_w_graf = 0; int ilosc_1_w_szukanym = 0;int ilosc_0_w_szukanym = 0; for(int i = 1; i<ilosc; i++) { if(graf[i]!=graf[i-1]) { if(graf[i-1]==0) { ilosc_0_w_graf +=1; } else { ilosc_1_w_graf +=1; } } } for(int i = 1; i<ilosc; i++) { if(szukany_graf[i]!=szukany_graf[i-1]) { if(graf[i-1]==0) { ilosc_0_w_szukanym +=1; } else { ilosc_1_w_szukanym +=1; } } } int jestesmy_w_domu = 0; for(int i = 0; i < ilosc-1;i++) { if(ilosc_polaczen[i]>=3) { jestesmy_w_domu = 1; } } int czerwone = 0; int czarne = 0; for(int i = 0; i < ilosc;i++) { if(graf[i]=='1') { czerwone +=1; } else { czarne +=1; } } if(jestesmy_w_domu ==1) { if(czerwone > 0 and czarne > 0) { cout << "TAK"<< endl; continue; } else { if (graf==szukany_graf) { cout << "TAK" << endl; continue; } else { cout << "NIE" << endl; continue; } } } else { if(czerwone == 0 or czarne == 0) { if (graf==szukany_graf) { cout << "TAK" << endl; continue; } else { cout << "NIE" << endl; continue; } } else { if(ilosc_0_w_graf<ilosc_0_w_szukanym or ilosc_1_w_graf < ilosc_1_w_szukanym) { cout << "NIE" << endl; continue; } else if(ilosc_0_w_graf==ilosc_0_w_szukanym or ilosc_1_w_graf == ilosc_1_w_szukanym) { if(graf[0]==szukany_graf[0] and graf[ilosc-1] ==szukany_graf[ilosc-1]) { cout << "TAK "<< endl; continue; } else { cout << "NIE" << endl; continue; } } else { cout << "TAK" << endl; continue; } } } } return 0; } |