Submission #609696

# Submission time Handle Problem Language Result Execution time Memory
609696 2022-07-27T19:24:42 Z Sam_a17 Jail (JOI22_jail) C++14
61 / 100
5000 ms 261484 KB
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
//#include "temp.cpp"
#include <cstdio>
using namespace std;

#ifndef ONLINE_JUDGE
#define dbg(x) cerr << #x <<" "; print(x); cerr << endl;
#else
#define dbg(x)
#endif

#define sz(x) (int((x).size()))
#define len(x) (int)x.length()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define clr(x) (x).clear()
#define uniq(x) x.resize(unique(all(x)) - x.begin());

#define pb push_back
#define popf pop_front
#define popb pop_back
#define ld long double
#define ll long long

void print(long long t) {cerr << t;}
void print(int t) {cerr << t;}
void print(string t) {cerr << t;}
void print(char t) {cerr << t;}
void print(double t) {cerr << t;}
void print(unsigned long long t) {cerr << t;}
void print(long double t) {cerr << t;}

template <class T, class V> void print(pair <T, V> p);
template <class T> void print(vector <T> v);
template <class T> void print(set <T> v);
template <class T, class V> void print(map <T, V> v);
template <class T> void print(multiset <T> v);
template <class T> void print(T v[],T n) {cerr << "["; for(int i = 0; i < n; i++) {cerr << v[i] << " ";} cerr << "]";}
template <class T, class V> void print(pair <T, V> p) {cerr << "{"; print(p.first); cerr << ","; print(p.second); cerr << "}";}
template <class T> void print(vector <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";}
template <class T> void print(set <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";}
template <class T> void print(multiset <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";}
template <class T, class V> void print(map <T, V> v) {cerr << "[ "; for (auto i : v) {print(i); cerr << " ";} cerr << "]";}

#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
#define nl '\n'

// for grid problems
int dx[8] = {-1,0,1,0,1,-1,1,-1};
int dy[8] = {0,1,0,-1,1,1,-1,-1};

// lowest / (1 << 17) >= 1e5 / (1 << 18) >= 2e5 / (1 << 21) >= 1e6
void fastIO() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr); cout.tie(nullptr);
}
// file in/out
void setIO(string str = "") {
  fastIO();

  if (str != "") {
    freopen((str + ".in").c_str(), "r", stdin);
    freopen((str + ".out").c_str(), "w", stdout);
  }
}

// Indexed Set
template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
const int N = 2e5 + 10;
vector<int> adj[N], dir[N], starts[N], endi[N];
int n, m, p[N], vis[N];
bool flag;

void dfs(int node, int parent) {
  p[node] = parent;
  for(auto i: adj[node]) {
    if(i == parent) continue;
    dfs(i, node);
  }
}

void dfsCycle(int node) {
  vis[node] = 1;

  for(auto i: dir[node]) {
    if(vis[i] == 1) {
      flag = true;
      return;
    } else if(!vis[i]) {
      dfsCycle(i);
    }

    if(flag) {
      return;
    }
  }

  vis[node] = 2;
}

void clear() {
  flag = false;
  for(int i = 1; i <= n; i++) {
    starts[i].clear(), endi[i].clear();
    adj[i].clear();
  }

  for(int i = 0; i < m; i++) {
    dir[i].clear(), vis[i] = 0;
  }
}

void solve_() {
  cin >> n;

  for(int i = 1; i <= n - 1; i++) {
    int a, b; cin >> a >> b;
    adj[a].push_back(b);
    adj[b].push_back(a);
  }

  cin >> m;

  vector<vector<int>> paths;
  vector<pair<int, int>> start_end;

  for(int i = 1; i <= m; i++) {
    int a, b; cin >> a >> b;
    start_end.push_back({a, b});

    dfs(a, -1);

    int node = b;
    vector<int> nodes;
    while(node != -1) {
      nodes.push_back(node);
      node = p[node];
    }

    starts[a].push_back(i - 1);
    endi[b].push_back(i - 1);

    sort(all(nodes));
    paths.push_back(nodes);
  }

  // check for every pair
  for(int i = 0; i < m; i++) {
    for(auto j: paths[i]) {
      
      for(auto k: starts[j]) {
        if(k == i) continue;
        dir[k].push_back(i);
      }

      for(auto k: endi[j]) {
        if(k == i) continue;
        dir[i].push_back(k);
      }

    }
  }

  // check for cycles
  for(int i = 0; i < m; i++) {
    if(!vis[i]) {
      dfsCycle(i);

      if(flag) {
        clear();
        cout << "No" << endl;
        return;
      }
    }
  }

  cout << "Yes" << endl;
  clear();
}

int main () {
  setIO("");

  auto solve = [&](int test_case)-> void {
    while(test_case--) {
      solve_();
    }
  };

  int test_cases = 1; cin >> test_cases;
  solve(test_cases);

  return 0;
}

Compilation message

jail.cpp: In function 'void setIO(std::string)':
jail.cpp:64:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |     freopen((str + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jail.cpp:65:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   65 |     freopen((str + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 10 ms 19028 KB Output is correct
2 Correct 10 ms 19028 KB Output is correct
3 Correct 10 ms 19016 KB Output is correct
4 Correct 20 ms 19028 KB Output is correct
5 Correct 32 ms 19120 KB Output is correct
6 Correct 11 ms 19028 KB Output is correct
7 Correct 11 ms 19156 KB Output is correct
8 Correct 18 ms 19320 KB Output is correct
9 Correct 798 ms 33944 KB Output is correct
10 Correct 1889 ms 261460 KB Output is correct
11 Correct 18 ms 19028 KB Output is correct
12 Correct 105 ms 19244 KB Output is correct
13 Execution timed out 5051 ms 27476 KB Time limit exceeded
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 10 ms 19028 KB Output is correct
2 Correct 11 ms 19112 KB Output is correct
3 Correct 10 ms 19028 KB Output is correct
4 Correct 10 ms 19052 KB Output is correct
5 Correct 11 ms 19028 KB Output is correct
6 Correct 11 ms 19128 KB Output is correct
7 Correct 11 ms 19092 KB Output is correct
8 Correct 11 ms 19028 KB Output is correct
9 Correct 15 ms 19028 KB Output is correct
10 Correct 10 ms 19072 KB Output is correct
11 Correct 10 ms 19028 KB Output is correct
12 Correct 10 ms 19028 KB Output is correct
13 Correct 11 ms 19028 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 19028 KB Output is correct
2 Correct 11 ms 19112 KB Output is correct
3 Correct 10 ms 19028 KB Output is correct
4 Correct 10 ms 19052 KB Output is correct
5 Correct 11 ms 19028 KB Output is correct
6 Correct 11 ms 19128 KB Output is correct
7 Correct 11 ms 19092 KB Output is correct
8 Correct 11 ms 19028 KB Output is correct
9 Correct 15 ms 19028 KB Output is correct
10 Correct 10 ms 19072 KB Output is correct
11 Correct 10 ms 19028 KB Output is correct
12 Correct 10 ms 19028 KB Output is correct
13 Correct 11 ms 19028 KB Output is correct
14 Correct 14 ms 19016 KB Output is correct
15 Correct 10 ms 19028 KB Output is correct
16 Correct 11 ms 19156 KB Output is correct
17 Correct 11 ms 19088 KB Output is correct
18 Correct 11 ms 19028 KB Output is correct
19 Correct 10 ms 19036 KB Output is correct
20 Correct 12 ms 19028 KB Output is correct
21 Correct 13 ms 19028 KB Output is correct
22 Correct 15 ms 19028 KB Output is correct
23 Correct 11 ms 19028 KB Output is correct
24 Correct 10 ms 19028 KB Output is correct
25 Correct 17 ms 19100 KB Output is correct
26 Correct 10 ms 19108 KB Output is correct
27 Correct 12 ms 19108 KB Output is correct
28 Correct 13 ms 19028 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 19028 KB Output is correct
2 Correct 11 ms 19112 KB Output is correct
3 Correct 10 ms 19028 KB Output is correct
4 Correct 10 ms 19052 KB Output is correct
5 Correct 11 ms 19028 KB Output is correct
6 Correct 11 ms 19128 KB Output is correct
7 Correct 11 ms 19092 KB Output is correct
8 Correct 11 ms 19028 KB Output is correct
9 Correct 15 ms 19028 KB Output is correct
10 Correct 10 ms 19072 KB Output is correct
11 Correct 10 ms 19028 KB Output is correct
12 Correct 10 ms 19028 KB Output is correct
13 Correct 11 ms 19028 KB Output is correct
14 Correct 14 ms 19016 KB Output is correct
15 Correct 10 ms 19028 KB Output is correct
16 Correct 11 ms 19156 KB Output is correct
17 Correct 11 ms 19088 KB Output is correct
18 Correct 11 ms 19028 KB Output is correct
19 Correct 10 ms 19036 KB Output is correct
20 Correct 12 ms 19028 KB Output is correct
21 Correct 13 ms 19028 KB Output is correct
22 Correct 15 ms 19028 KB Output is correct
23 Correct 11 ms 19028 KB Output is correct
24 Correct 10 ms 19028 KB Output is correct
25 Correct 17 ms 19100 KB Output is correct
26 Correct 10 ms 19108 KB Output is correct
27 Correct 12 ms 19108 KB Output is correct
28 Correct 13 ms 19028 KB Output is correct
29 Correct 17 ms 19240 KB Output is correct
30 Correct 15 ms 19168 KB Output is correct
31 Correct 17 ms 19156 KB Output is correct
32 Correct 16 ms 19140 KB Output is correct
33 Correct 12 ms 19136 KB Output is correct
34 Correct 19 ms 19156 KB Output is correct
35 Correct 19 ms 19156 KB Output is correct
36 Correct 15 ms 19156 KB Output is correct
37 Correct 14 ms 19156 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 19028 KB Output is correct
2 Correct 11 ms 19112 KB Output is correct
3 Correct 10 ms 19028 KB Output is correct
4 Correct 10 ms 19052 KB Output is correct
5 Correct 11 ms 19028 KB Output is correct
6 Correct 11 ms 19128 KB Output is correct
7 Correct 11 ms 19092 KB Output is correct
8 Correct 11 ms 19028 KB Output is correct
9 Correct 15 ms 19028 KB Output is correct
10 Correct 10 ms 19072 KB Output is correct
11 Correct 10 ms 19028 KB Output is correct
12 Correct 10 ms 19028 KB Output is correct
13 Correct 11 ms 19028 KB Output is correct
14 Correct 14 ms 19016 KB Output is correct
15 Correct 10 ms 19028 KB Output is correct
16 Correct 11 ms 19156 KB Output is correct
17 Correct 11 ms 19088 KB Output is correct
18 Correct 11 ms 19028 KB Output is correct
19 Correct 10 ms 19036 KB Output is correct
20 Correct 12 ms 19028 KB Output is correct
21 Correct 13 ms 19028 KB Output is correct
22 Correct 15 ms 19028 KB Output is correct
23 Correct 11 ms 19028 KB Output is correct
24 Correct 10 ms 19028 KB Output is correct
25 Correct 17 ms 19100 KB Output is correct
26 Correct 10 ms 19108 KB Output is correct
27 Correct 12 ms 19108 KB Output is correct
28 Correct 13 ms 19028 KB Output is correct
29 Correct 17 ms 19240 KB Output is correct
30 Correct 15 ms 19168 KB Output is correct
31 Correct 17 ms 19156 KB Output is correct
32 Correct 16 ms 19140 KB Output is correct
33 Correct 12 ms 19136 KB Output is correct
34 Correct 19 ms 19156 KB Output is correct
35 Correct 19 ms 19156 KB Output is correct
36 Correct 15 ms 19156 KB Output is correct
37 Correct 14 ms 19156 KB Output is correct
38 Correct 850 ms 34040 KB Output is correct
39 Correct 2193 ms 261484 KB Output is correct
40 Correct 1308 ms 22508 KB Output is correct
41 Correct 1210 ms 19708 KB Output is correct
42 Correct 605 ms 22732 KB Output is correct
43 Correct 129 ms 19432 KB Output is correct
44 Correct 138 ms 19308 KB Output is correct
45 Correct 3594 ms 23724 KB Output is correct
46 Correct 3459 ms 23676 KB Output is correct
47 Correct 1246 ms 62340 KB Output is correct
48 Correct 1213 ms 64052 KB Output is correct
49 Correct 2568 ms 25304 KB Output is correct
50 Correct 2909 ms 25340 KB Output is correct
51 Correct 573 ms 23972 KB Output is correct
52 Correct 560 ms 23988 KB Output is correct
53 Correct 141 ms 19428 KB Output is correct
54 Correct 3134 ms 23548 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 19028 KB Output is correct
2 Correct 10 ms 19000 KB Output is correct
3 Correct 10 ms 19044 KB Output is correct
4 Correct 10 ms 19028 KB Output is correct
5 Correct 23 ms 19152 KB Output is correct
6 Correct 11 ms 19084 KB Output is correct
7 Correct 11 ms 19040 KB Output is correct
8 Correct 10 ms 19028 KB Output is correct
9 Correct 10 ms 19028 KB Output is correct
10 Correct 13 ms 19028 KB Output is correct
11 Correct 10 ms 19028 KB Output is correct
12 Correct 14 ms 19132 KB Output is correct
13 Correct 65 ms 19132 KB Output is correct
14 Correct 84 ms 19124 KB Output is correct
15 Correct 93 ms 19028 KB Output is correct
16 Execution timed out 5055 ms 24068 KB Time limit exceeded
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 10 ms 19028 KB Output is correct
2 Correct 10 ms 19028 KB Output is correct
3 Correct 10 ms 19016 KB Output is correct
4 Correct 20 ms 19028 KB Output is correct
5 Correct 32 ms 19120 KB Output is correct
6 Correct 11 ms 19028 KB Output is correct
7 Correct 11 ms 19156 KB Output is correct
8 Correct 18 ms 19320 KB Output is correct
9 Correct 798 ms 33944 KB Output is correct
10 Correct 1889 ms 261460 KB Output is correct
11 Correct 18 ms 19028 KB Output is correct
12 Correct 105 ms 19244 KB Output is correct
13 Execution timed out 5051 ms 27476 KB Time limit exceeded
14 Halted 0 ms 0 KB -