Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma GCC optimize("Ofast")
- // #pragma GCC target("avx,avx2,fma")
- #include<bits/stdc++.h>
- #define F first
- #define S second
- #define vec vector
- #define pb push_back
- #define cld complex<ld>
- #define pll pair<ll, ll>
- #define pdd pair<ld, ld>
- #define umap unordered_map
- #define uset unordered_set
- #define pii pair<int, int>
- #define pnn pair<Node*, Node*>
- #define all(m) m.begin(), m.end()
- #define uid uniform_int_distribution
- #define init(m, x) memset(m, x, sizeof(m));
- #define pripii(p) cout << "{" << p.F << ", " << p.S << "} "
- #define FILE ifstream in("input.txt"); ofstream out("output.txt");
- #define fast cin.tie(0); cout.tie(0); cin.sync_with_stdio(0); cout.sync_with_stdio(0);
- using namespace std;
- typedef string str;
- typedef long long ll;
- typedef long double ld;
- typedef unsigned int uint;
- typedef unsigned long long ull;
- mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
- const int G = 110, D = 11e3;
- int n, m, k, a, b;
- vec<vec<int>> l[D];
- int res[D][G], sm[D];
- int fsm;
- int chk(int x, int d){
- if(fsm<d) return 0;
- // for(int q=0; q<d; q++){
- // for(int w=0; w<n; w++){
- // if(res[q][w]==1) return 0;
- // }
- // }
- int fir[n]; init(fir, -1);
- fir[x] = d;
- for(; d<D; d++){
- int sick[n] = {0}, infe[n] = {0};
- for(int q=0; q<n; q++){
- if(fir[q]==-1) continue;
- int df = d-fir[q];
- sick[q] = df<b;
- infe[q] = a<=df && df<b;
- }
- for(int q=0; q<n; q++){
- if(res[d][q]!=-1 && res[d][q]!=sick[q]) return 0;
- }
- for(vec<int> &u : l[d]){
- int fl = 0;
- for(int i : u) fl |= infe[i];
- if(fl){
- for(int i : u){
- if(fir[i]==-1) fir[i] = d;
- }
- }
- }
- }
- return 1;
- }
- ifstream in("C:\\Users\\Bogdan\\ClionProjects\\EZZ\\input.txt");
- ofstream out("C:\\Users\\Bogdan\\ClionProjects\\EZZ\\output.txt");
- void solve(){
- for(int q=0; q<D; q++){
- l[q].clear();
- }
- in>>n>>m>>k>>a>>b;
- for(int q=0; q<m; q++){
- int d, cnt; in>>d>>cnt;
- vec<int> u(cnt);
- for(int w=0; w<cnt; w++){
- in>>u[w]; u[w]--;
- }
- l[d].pb(u);
- }
- init(res, -1);
- init(sm, 0);
- for(int q=0; q<k; q++){
- int d, y, z; in>>d>>y>>z; y--;
- res[d][y] = z;
- sm[d] += z;
- }
- fsm = 1e9;
- for(int q=0; q<D; q++) {
- if(sm[q]) {
- fsm = q;
- break;
- }
- }
- for(int q=0; q<n; q++){
- cout<<"GO: "<<q<<endl;
- for(int d=0; d<D; d++){
- int tyt = chk(q, d);
- if(tyt==1){
- out<<q+1<<" "<<d<<endl;
- cout<<q+1<<" "<<d<<endl;
- return;
- }
- }
- }
- out<<"LOX LOX"<<endl;
- cout<<"LOX LOX"<<endl;
- }
- int main() {
- fast;
- ll z; in>>z;
- for(; z--;){
- solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement