Submission #1056748

#TimeUsernameProblemLanguageResultExecution timeMemory
1056748SzymonKrzywdaThe Xana coup (BOI21_xanadu)C++17
15 / 100
1088 ms7268 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,a,b; cin >> n; vector<vector<int>> graf(n, vector<int>(0)); vector<int> tablica(n,0); bool sciezka = true; for (int i=0; i<n-1; i++){ cin >> a >> b; a--;b--; graf[a].push_back(b); graf[b].push_back(a); if (abs(a-b)!=1) sciezka=false; } for (int i=0; i<n; i++) cin >> tablica[i]; if (sciezka){ int wynik=0; for (int i=1; i<n; i++){ if (tablica[i-1]){ tablica[i-1] = 0; tablica[i] = (tablica[i]+1)%2; if (i<(n-1)) tablica[i+1] = (tablica[i+1]+1)%2; wynik++; } } bool git=true; for (int i=0; i<n; i++) if(tablica[i]) git=false; if (git) cout << wynik << endl; else cout << "impossible\n"; } else{ vector<int> tablica_2(n,0); int wynik=1e7; for (int j=0; j<=((long long)1<<n); j++){ int wynik_2=0; for (int i=0; i<n; i++) tablica_2[i] = tablica[i]; for (int i=0; i<n; i++){ //cout << j << " " << i <<" " << ((j)&(1<<(i))) << " " << (1<<(i)) << endl; if ((j)&((long long)1<<(i))){ tablica_2[i] = (tablica_2[i]+1)%2; for (auto k : graf[i]) tablica_2[k] = (tablica_2[k]+1)%2; wynik_2++; } } bool good = true; for (int i=0; i<n; i++){ if (tablica_2[i]) {good=false; break;} } if (good) { wynik = min(wynik,wynik_2); //for (int i=0; i<n; i++){ //if ((j)&(1<<(i))){ } } if (wynik==1e7) cout << "impossible\n"; else cout << wynik << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...