QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#120143#6190. Graph Problemhos_lyricAC ✓2575ms14496kbC++1412.2kb2023-07-06 14:13:372023-07-06 14:13:41

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-06 14:13:41]
  • 评测
  • 测评结果:AC
  • 用时:2575ms
  • 内存:14496kb
  • [2023-07-06 14:13:37]
  • 提交

answer

#include <cassert>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

using namespace std;

using Int = long long;

template <class T1, class T2> ostream &operator<<(ostream &os, const pair<T1, T2> &a) { return os << "(" << a.first << ", " << a.second << ")"; };
template <class T> ostream &operator<<(ostream &os, const vector<T> &as) { const int sz = as.size(); os << "["; for (int i = 0; i < sz; ++i) { if (i >= 256) { os << ", ..."; break; } if (i > 0) { os << ", "; } os << as[i]; } return os << "]"; }
template <class T> void pv(T a, T b) { for (T i = a; i != b; ++i) cerr << *i << " "; cerr << endl; }
template <class T> bool chmin(T &t, const T &f) { if (t > f) { t = f; return true; } return false; }
template <class T> bool chmax(T &t, const T &f) { if (t < f) { t = f; return true; } return false; }

// fast IO by yosupo
// sc.read(string &) appends the input
struct Scanner {
    FILE* fp = nullptr;
    char line[(1 << 15) + 1];
    size_t st = 0, ed = 0;
    void reread() {
        memmove(line, line + st, ed - st);
        ed -= st;
        st = 0;
        ed += fread(line + ed, 1, (1 << 15) - ed, fp);
        line[ed] = '\0';
    }
    bool succ() {
        while (true) {
            if (st == ed) {
                reread();
                if (st == ed) return false;
            }
            while (st != ed && isspace(line[st])) st++;
            if (st != ed) break;
        }
        if (ed - st <= 50) reread();
        return true;
    }
    template <class T, enable_if_t<is_same<T, string>::value, int> = 0>
    bool read_single(T& ref) {
        if (!succ()) return false;
        while (true) {
            size_t sz = 0;
            while (st + sz < ed && !isspace(line[st + sz])) sz++;
            ref.append(line + st, sz);
            st += sz;
            if (!sz || st != ed) break;
            reread();            
        }
        return true;
    }
    template <class T, enable_if_t<is_integral<T>::value, int> = 0>
    bool read_single(T& ref) {
        if (!succ()) return false;
        bool neg = false;
        if (line[st] == '-') {
            neg = true;
            st++;
        }
        ref = T(0);
        while (isdigit(line[st])) {
            ref = 10 * ref + (line[st++] - '0');
        }
        if (neg) ref = -ref;
        return true;
    }
    template <class T> bool read_single(vector<T>& ref) {
        for (auto& d : ref) {
            if (!read_single(d)) return false;
        }
        return true;
    }
    void read() {}
    template <class H, class... T> void read(H& h, T&... t) {
        bool f = read_single(h);
        assert(f);
        read(t...);
    }
    Scanner(FILE* _fp) : fp(_fp) {}
};

struct Printer {
  public:
    template <bool F = false> void write() {}
    template <bool F = false, class H, class... T>
    void write(const H& h, const T&... t) {
        if (F) write_single(' ');
        write_single(h);
        write<true>(t...);
    }
    template <class... T> void writeln(const T&... t) {
        write(t...);
        write_single('\n');
    }

    Printer(FILE* _fp) : fp(_fp) {}
    ~Printer() { flush(); }

  private:
    static constexpr size_t SIZE = 1 << 15;
    FILE* fp;
    char line[SIZE], small[50];
    size_t pos = 0;
    void flush() {
        fwrite(line, 1, pos, fp);
        pos = 0;
    }
    void write_single(const char& val) {
        if (pos == SIZE) flush();
        line[pos++] = val;
    }
    template <class T, enable_if_t<is_integral<T>::value, int> = 0>
    void write_single(T val) {
        if (pos > (1 << 15) - 50) flush();
        if (val == 0) {
            write_single('0');
            return;
        }
        if (val < 0) {
            write_single('-');
            val = -val;  // todo min
        }
        size_t len = 0;
        while (val) {
            small[len++] = char('0' + (val % 10));
            val /= 10;
        }
        for (size_t i = 0; i < len; i++) {
            line[pos + i] = small[len - 1 - i];
        }
        pos += len;
    }
    void write_single(const string& s) {
        for (char c : s) write_single(c);
    }
    void write_single(const char* s) {
        size_t len = strlen(s);
        for (size_t i = 0; i < len; i++) write_single(s[i]);
    }
    template <class T> void write_single(const vector<T>& val) {
        auto n = val.size();
        for (size_t i = 0; i < n; i++) {
            if (i) write_single(' ');
            write_single(val[i]);
        }
    }
    void write_single(long double d){
		{
			long long v=d;
			write_single(v);
			d-=v;
		}
		write_single('.');
		for(int _=0;_<8;_++){
			d*=10;
			long long v=d;
			write_single(v);
			d-=v;
		}
    }
};

Scanner sc(stdin);
Printer pr(stdout);


////////////////////////////////////////////////////////////////////////////////
template <unsigned M_> struct ModInt {
  static constexpr unsigned M = M_;
  unsigned x;
  constexpr ModInt() : x(0U) {}
  constexpr ModInt(unsigned x_) : x(x_ % M) {}
  constexpr ModInt(unsigned long long x_) : x(x_ % M) {}
  constexpr ModInt(int x_) : x(((x_ %= static_cast<int>(M)) < 0) ? (x_ + static_cast<int>(M)) : x_) {}
  constexpr ModInt(long long x_) : x(((x_ %= static_cast<long long>(M)) < 0) ? (x_ + static_cast<long long>(M)) : x_) {}
  ModInt &operator+=(const ModInt &a) { x = ((x += a.x) >= M) ? (x - M) : x; return *this; }
  ModInt &operator-=(const ModInt &a) { x = ((x -= a.x) >= M) ? (x + M) : x; return *this; }
  ModInt &operator*=(const ModInt &a) { x = (static_cast<unsigned long long>(x) * a.x) % M; return *this; }
  ModInt &operator/=(const ModInt &a) { return (*this *= a.inv()); }
  ModInt pow(long long e) const {
    if (e < 0) return inv().pow(-e);
    ModInt a = *this, b = 1U; for (; e; e >>= 1) { if (e & 1) b *= a; a *= a; } return b;
  }
  ModInt inv() const {
    unsigned a = M, b = x; int y = 0, z = 1;
    for (; b; ) { const unsigned q = a / b; const unsigned c = a - q * b; a = b; b = c; const int w = y - static_cast<int>(q) * z; y = z; z = w; }
    assert(a == 1U); return ModInt(y);
  }
  ModInt operator+() const { return *this; }
  ModInt operator-() const { ModInt a; a.x = x ? (M - x) : 0U; return a; }
  ModInt operator+(const ModInt &a) const { return (ModInt(*this) += a); }
  ModInt operator-(const ModInt &a) const { return (ModInt(*this) -= a); }
  ModInt operator*(const ModInt &a) const { return (ModInt(*this) *= a); }
  ModInt operator/(const ModInt &a) const { return (ModInt(*this) /= a); }
  template <class T> friend ModInt operator+(T a, const ModInt &b) { return (ModInt(a) += b); }
  template <class T> friend ModInt operator-(T a, const ModInt &b) { return (ModInt(a) -= b); }
  template <class T> friend ModInt operator*(T a, const ModInt &b) { return (ModInt(a) *= b); }
  template <class T> friend ModInt operator/(T a, const ModInt &b) { return (ModInt(a) /= b); }
  explicit operator bool() const { return x; }
  bool operator==(const ModInt &a) const { return (x == a.x); }
  bool operator!=(const ModInt &a) const { return (x != a.x); }
  friend std::ostream &operator<<(std::ostream &os, const ModInt &a) { return os << a.x; }
};
////////////////////////////////////////////////////////////////////////////////

constexpr unsigned MO = 998244353;
using Mint = ModInt<MO>;

vector<vector<Mint>> inverse(vector<vector<Mint>> a) {
  const int n = a.size();
  vector<vector<Mint>> b(n, vector<Mint>(n, 0));
  for (int i = 0; i < n; ++i) b[i][i] = 1;
  for (int h = 0; h < n; ++h) {
    for (int i = h; i < n; ++i) if (a[i][h]) {
      swap(a[h], a[i]);
      swap(b[h], b[i]);
      break;
    }
    assert(a[h][h]);
    const Mint s = a[h][h].inv();
    for (int j = h + 1; j < n; ++j) a[h][j] *= s;
    for (int j = 0; j < n; ++j) b[h][j] *= s;
    for (int i = h + 1; i < n; ++i) {
      const Mint t = a[i][h];
      if (t) {
        for (int j = h + 1; j < n; ++j) a[i][j] -= t * a[h][j];
        for (int j = 0; j < n; ++j) b[i][j] -= t * b[h][j];
      }
    }
  }
  for (int h = n; --h >= 0; ) for (int i = 0; i < h; ++i) {
    const Mint t = a[i][h];
    if (t) for (int j = 0; j < n; ++j) b[i][j] -= t * b[h][j];
  }
  return b;
}


unsigned xrand() {
  static unsigned x = 314159265, y = 358979323, z = 846264338, w = 327950288;
  unsigned t = x ^ x << 11; x = y; y = z; z = w; return w = w ^ w >> 19 ^ t ^ t >> 8;
}


/*
  G: adj matrix with random weights
  A := I - G
  B := A^-1
  U[k][u] := [P[k] = u]
  V[k][u] := G[P[k]][u]
  (A + U V^T)^-1 = B - B U (I[K] + V^T B U)^-1 V^T B
*/

int N, M;
bool adj[510][510];
int Q;

constexpr int Z = 2;
Mint G[Z][510][510];
Mint A[Z][510][510];
Mint B[Z][510][510];
Mint GB[Z][510][510];

void Init() {
  for (int z = 0; z < Z; ++z) {
    vector<vector<Mint>> a(N, vector<Mint>(N));
    for (int u = 0; u < N; ++u) for (int v = 0; v < N; ++v) {
      G[z][u][v] = adj[u][v] ? xrand() : 0;
      A[z][u][v] = ((u == v) ? 1 : 0) - G[z][u][v];
      a[u][v] = A[z][u][v];
    }
    const auto b = inverse(a);
    for (int u = 0; u < N; ++u) for (int v = 0; v < N; ++v) {
      B[z][u][v] = b[u][v];
    }
    memset(GB[z], 0, sizeof(GB[z]));
    for (int u = 0; u < N; ++u) for (int w = 0; w < N; ++w) for (int v = 0; v < N; ++v) {
      GB[z][u][v] += G[z][u][w] * B[z][w][v];
    }
  }
}

int K;
int P[10];

Mint C[Z][10][10];

#ifdef LOCAL
int del[510];
bool d[510][510];
#endif

// (I[K] + V^T B U)^-1
void InitP() {
#ifdef LOCAL
cerr<<"P = ";pv(P,P+K);
fill(del,del+N,0);
for(int k=0;k<K;++k)del[P[k]]=1;
for(int u=0;u<N;++u)for(int v=0;v<N;++v)d[u][v]=false;
for(int u=0;u<N;++u)if(!del[u])d[u][u]=true;
for(int u=0;u<N;++u)for(int v=0;v<N;++v)if(!del[u]&&!del[v]&&adj[u][v])d[u][v]=true;
for(int w=0;w<N;++w)for(int u=0;u<N;++u)if(d[u][w])for(int v=0;v<N;++v)if(d[w][v])d[u][v]=true;
cerr<<"  d = ";for(int u=0;u<N;++u){for(int v=0;v<N;++v){cerr<<d[u][v];}cerr<<" ";}cerr<<endl;
#endif
  for (int z = 0; z < Z; ++z) {
    vector<vector<Mint>> vbu(K, vector<Mint>(K, 0));
    for (int k = 0; k < K; ++k) for (int l = 0; l < K; ++l) {
      vbu[k][l] = ((k == l) ? 1 : 0) + GB[z][P[k]][P[l]];
    }
    const auto c = inverse(vbu);
    for (int k = 0; k < K; ++k) for (int l = 0; l < K; ++l) {
      C[z][k][l] = c[k][l];
    }
  }
}

// B - B U C V^T B
int Query(int s, int t) {
  for (int z = 0; z < Z; ++z) {
    Mint sum = B[z][s][t];
    for (int k = 0; k < K; ++k) for (int l = 0; l < K; ++l) {
      sum -= B[z][s][P[k]] * C[z][k][l] * GB[z][P[l]][t];
    }
    if (sum) {
#ifdef LOCAL
if(!del[s]&&!del[t]){
 cerr<<"  "<<s<<" "<<t<<": "<<d[s][t]<<" "<<1<<endl;
 assert(d[s][t]);
}
#endif
      return 1;
    }
  }
#ifdef LOCAL
if(!del[s]&&!del[t]){
 cerr<<"  "<<s<<" "<<t<<": "<<d[s][t]<<" "<<0<<endl;
 assert(!d[s][t]);
}
#endif
  return 0;
}

int main() {
  sc.read(N, M);
  memset(adj, 0, sizeof(adj));
  for (int i = 0; i < M; ++i) {
    int u, v;
    sc.read(u, v);
    --u;
    --v;
    adj[u][v] = true;
  }
  Init();
  
/*
    cnt = 0
    for i = 1 ... q
        read(k1)
        for j = 1 ... k1
            read(p'[j])
            p[j] =(p'[j] + cnt - 1) % n + 1
        read(k2)
        for j = 1 ... k2
            read(s', t')
            s = (s' + cnt - 1) % n + 1
            t = (t' + cnt - 1) % n + 1
            cnt += query(s, t)
// if s can reach t, query return 1, otherwise, query return 0
*/
  sc.read(Q);
  int cnt = 0;
  for (int q = 0; q < Q; ++q) {
    string ansStr;
    sc.read(K);
    for (int k = 0; k < K; ++k) {
      sc.read(P[k]);
      P[k] = (P[k] + cnt - 1) % N + 1;
      --P[k];
    }
    InitP();
    
    int L;
    sc.read(L);
    for (; L--; ) {
      int s, t;
      sc.read(s, t);
      s = (s + cnt - 1) % N + 1;
      t = (t + cnt - 1) % N + 1;
      --s;
      --t;
      const int ans = Query(s, t);
      ansStr += (char)('0' + ans);
      cnt += ans;
    }
    pr.writeln(ansStr);
  }
  return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 11716kb

input:

5 4
1 2
2 3
3 4
4 5
2
1 4
2 1 5 1 3
3 5 3 4
1 1 2

output:

01
1

result:

ok 2 lines

Test #2:

score: 0
Accepted
time: 8ms
memory: 11748kb

input:

100 4870
1 4
1 9
2 1
2 6
2 8
4 5
4 10
5 2
5 3
5 7
6 2
6 4
6 8
7 1
7 2
7 8
7 10
8 1
8 2
8 3
8 4
8 5
8 6
8 7
8 9
8 13
8 16
8 17
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 18
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 11
10 15
11 1
11 2
11 3
11 4
11 5
11 6
11 7
11 8
11 9
11 10
11 12
11 18
11 20
12 1
12 2
12 3
12 4
1...

output:

1011000010
1010110101
0001010000
0000101001
1000010000
0111001101
0011001101
1100010010
0001100010
0010110101
0011001111
0001000101
1101010010
0100001100
1000100001
0100000000
1110100000
0101111010
0111001001
1110000000
1011000011
0110000000
0000000100
0001011000
1000111000
1111000010
1000110000
011...

result:

ok 100 lines

Test #3:

score: 0
Accepted
time: 3ms
memory: 10744kb

input:

100 4839
1 2
1 7
1 12
1 13
1 15
1 17
1 21
1 22
1 24
2 1
2 4
2 5
2 7
2 12
2 16
2 19
2 22
2 24
3 7
3 8
3 13
3 20
3 22
4 8
4 12
4 14
4 19
5 2
5 3
5 4
5 6
5 7
5 10
5 13
5 14
5 19
5 24
6 3
6 7
6 8
6 10
6 12
6 13
6 15
6 17
6 19
6 21
6 23
6 24
7 2
7 6
7 8
7 9
7 10
7 12
7 13
7 16
7 23
8 1
8 9
8 11
8 12
8 13...

output:

1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111100111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
111...

result:

ok 100 lines

Test #4:

score: 0
Accepted
time: 2ms
memory: 10460kb

input:

100 4650
1 7
1 12
1 20
1 22
2 7
2 9
2 10
2 11
2 14
2 18
2 20
3 1
3 4
3 8
3 12
3 14
3 16
3 17
3 20
3 21
3 22
4 1
4 6
4 8
4 11
4 12
4 13
4 16
4 21
5 2
5 4
5 9
5 16
5 19
5 21
6 7
6 9
6 10
6 21
7 2
7 8
7 9
7 19
7 20
7 22
8 5
8 7
8 11
8 12
8 14
8 21
9 1
9 5
9 6
9 7
9 8
9 12
9 17
9 21
9 22
10 4
10 9
10 12...

output:

1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
111...

result:

ok 100 lines

Test #5:

score: 0
Accepted
time: 5ms
memory: 12016kb

input:

100 4945
1 2
1 3
1 5
1 7
1 8
1 9
1 10
1 13
1 15
2 1
2 3
2 4
2 9
2 11
2 12
2 15
3 1
3 10
3 12
3 16
4 1
4 5
4 10
4 12
4 13
4 15
4 16
5 6
5 11
5 16
5 17
6 2
6 10
6 11
6 14
7 1
7 2
7 3
7 4
7 5
7 6
7 8
7 9
7 10
7 11
7 16
7 21
7 22
7 23
7 24
7 25
7 27
7 28
7 30
7 31
7 32
7 35
7 38
7 39
8 1
8 2
8 3
8 4
8 5...

output:

1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1110101101
1111111111
1111111111
1111111111
1111111111
1100011011
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
111...

result:

ok 100 lines

Test #6:

score: 0
Accepted
time: 890ms
memory: 14496kb

input:

500 124582
1 12
1 14
2 4
2 7
2 9
2 13
2 14
2 18
3 1
3 4
3 7
3 14
3 17
4 1
4 3
4 6
4 12
4 15
4 18
5 3
6 1
6 3
6 8
6 10
6 11
6 13
6 15
6 17
6 18
7 3
7 4
7 5
7 8
7 9
7 17
8 2
8 6
9 10
9 13
9 17
10 2
10 5
10 17
11 1
11 2
11 3
11 4
11 5
11 6
11 7
11 8
11 9
11 10
11 17
11 18
11 19
11 26
12 1
12 2
12 3
12 ...

output:

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
...

result:

ok 100000 lines

Test #7:

score: 0
Accepted
time: 895ms
memory: 14352kb

input:

500 125402
1 3
1 7
1 10
1 13
1 16
1 21
1 23
1 25
1 28
1 36
1 37
2 3
2 4
2 6
2 7
2 9
2 11
2 16
2 17
2 19
2 20
2 24
2 26
2 28
2 30
2 37
3 2
3 18
3 19
3 21
3 25
3 26
3 32
4 7
4 9
4 10
4 11
4 12
4 14
4 15
4 18
4 19
4 24
4 33
4 35
4 36
5 1
5 4
5 10
5 11
5 17
5 19
5 20
5 21
5 23
5 24
5 31
5 32
5 36
5 38
5...

output:

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
...

result:

ok 100000 lines

Test #8:

score: 0
Accepted
time: 895ms
memory: 14384kb

input:

500 123930
1 6
1 11
1 13
1 16
1 22
1 25
1 26
1 34
1 38
1 41
1 42
1 43
1 44
1 46
1 48
1 49
1 51
1 53
1 56
2 6
2 9
2 13
2 15
2 24
2 31
2 33
2 36
2 37
2 43
2 44
2 50
2 53
2 56
3 2
3 4
3 5
3 16
3 18
3 19
3 25
3 31
3 32
3 40
3 43
3 44
3 47
3 48
3 50
3 51
3 53
4 1
4 2
4 3
4 5
4 6
4 8
4 14
4 18
4 20
4 26
4...

output:

0
1
1
0
1
1
1
1
1
1
1
1
0
1
1
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
1
0
0
1
0
0
1
1
1
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
1
0
1
0
0
0
0
0
1
0
0
1
0
0
0
1
0
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
1
0
1
0
0
0
1
0
1
1
1
1
0
0
0
1
0
1
1
0
0
1
1
0
1
1
0
1
1
0
0
0
1
1
0
0
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
0
1
1
1
...

result:

ok 100000 lines

Test #9:

score: 0
Accepted
time: 909ms
memory: 14452kb

input:

500 123484
1 5
1 8
1 10
1 11
1 12
1 20
1 23
1 26
1 27
1 28
1 29
1 31
1 33
1 41
2 4
2 7
2 10
2 18
2 20
2 34
2 35
2 39
2 41
2 42
2 44
2 46
2 52
3 4
3 5
3 6
3 7
3 9
3 14
3 17
3 19
3 23
3 25
3 26
3 32
3 36
3 38
3 39
3 40
3 44
3 46
3 48
3 51
4 1
4 7
4 11
4 12
4 14
4 16
4 17
4 19
4 21
4 23
4 24
4 25
4 29
...

output:

0
0
1
1
1
0
1
1
1
1
0
0
0
1
0
1
1
1
1
0
0
1
1
0
0
0
1
1
1
0
0
1
1
0
0
0
1
1
0
1
0
0
0
1
1
1
1
1
0
0
0
0
0
1
1
0
0
1
0
0
1
1
1
0
1
0
1
0
0
1
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
0
0
0
0
1
0
0
0
1
1
0
0
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
0
1
0
1
0
1
1
1
1
1
0
1
1
1
1
1
0
0
1
0
0
0
1
0
1
0
...

result:

ok 100000 lines

Test #10:

score: 0
Accepted
time: 1721ms
memory: 14480kb

input:

500 3278
2 5
2 7
3 5
4 6
4 9
5 6
5 7
5 8
6 8
6 9
6 10
7 8
7 9
8 9
9 13
9 20
9 22
9 23
9 24
9 27
9 29
9 31
10 12
10 14
10 17
10 21
10 23
10 24
10 25
10 26
10 27
11 15
11 17
11 20
11 21
11 25
12 16
12 20
12 21
12 22
12 24
12 28
12 32
12 33
12 39
12 42
12 45
12 46
12 47
12 48
13 14
13 20
13 21
13 23
13...

output:

1011111110
1010010110
0011111011
0101110101
0101011111
1111100001
1111111101
1110000110
1111111011
1111101011
1100101011
1110110111
1100111011
1110100100
1010011111
1111110111
0110111111
1111011100
1110011111
1001101000
1110100111
0111110111
1110111110
1101110001
1111010111
0100100011
1111010011
111...

result:

ok 400000 lines

Test #11:

score: 0
Accepted
time: 1636ms
memory: 14416kb

input:

500 3720
1 3
1 8
1 9
1 11
1 12
1 13
1 18
1 24
1 25
2 4
2 6
2 9
2 10
2 12
2 13
2 18
2 23
2 24
3 8
3 15
3 18
3 19
3 22
3 25
3 26
4 10
4 15
4 17
4 19
5 7
5 9
5 10
5 12
5 13
5 14
5 21
6 8
6 9
6 13
6 16
6 24
7 9
7 11
7 13
7 14
7 15
7 16
7 18
7 26
8 10
8 15
8 18
8 19
8 21
8 22
9 14
9 15
9 16
9 20
9 21
9 2...

output:

1111111101
1111111100
1110111110
1111111110
1111111111
1111111110
1101111011
1111111111
1111110111
1111111101
1111111111
0001010100
1111111111
1111111111
0011110111
1111111101
1111111111
1111111111
1110111111
1111111111
1011110011
1011111111
1111101101
1111111110
1111111111
1111111110
1111001111
110...

result:

ok 400000 lines

Test #12:

score: 0
Accepted
time: 1611ms
memory: 14384kb

input:

500 4232
1 2
1 6
1 14
1 16
2 4
2 6
2 10
2 16
2 17
2 18
2 25
2 26
2 28
3 4
3 6
3 12
3 13
3 17
3 18
3 25
4 8
4 12
4 18
4 23
4 28
5 8
5 9
5 10
5 12
5 13
5 17
5 18
5 21
5 26
5 28
6 8
6 9
6 12
6 23
6 24
6 25
6 26
6 27
6 29
7 15
7 23
7 24
7 25
7 28
8 12
8 14
8 16
8 19
8 29
9 12
9 13
9 15
9 16
9 17
9 20
9 ...

output:

1111011011
1111111111
1111111111
0111111011
1111111011
1110111111
0111111110
1110110111
1110001110
1011111111
0111111111
1111111111
1011111110
1111111111
1011111111
1111111111
1111011111
1111111011
1110111111
0111111111
0111110111
1111101111
0111110111
0111111111
1111111111
1111110011
1111111111
111...

result:

ok 400000 lines

Test #13:

score: 0
Accepted
time: 1653ms
memory: 14332kb

input:

500 6443
1 5
1 9
1 12
1 15
1 18
1 20
1 21
1 22
1 24
1 26
1 27
1 30
1 34
1 35
1 37
1 40
1 42
1 45
1 47
1 48
1 49
1 55
1 58
1 64
1 67
1 68
1 71
1 72
2 3
2 6
2 8
2 9
2 16
2 17
2 19
2 23
2 26
2 29
2 31
2 35
2 36
2 37
2 38
2 41
2 45
2 47
2 52
2 53
2 57
2 69
2 70
2 73
2 76
2 77
3 6
3 12
3 14
3 15
3 20
3 2...

output:

1001111111
0101111010
1111011111
1111111010
1111101111
0111111111
0110111111
1110111111
1111101101
1011111111
1111111111
1111111101
1110111110
1101111111
1011111111
1011111111
1111111111
1111110110
1111110101
1011111011
1111101110
1111111010
0011101101
1011111101
1111101111
1111100110
1101101000
111...

result:

ok 400000 lines

Test #14:

score: 0
Accepted
time: 2575ms
memory: 14456kb

input:

500 123824
2 4
2 6
3 1
3 10
4 2
4 6
4 7
4 8
5 2
5 3
5 4
5 7
5 8
5 11
6 7
7 3
7 5
7 6
7 8
7 11
8 2
8 4
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 12
9 14
9 17
9 21
9 23
9 24
9 25
9 26
9 27
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 13
10 15
10 18
10 19
10 23
11 1
11 2
11 3
11 4
11 5
11 6
11 7
11 8
11 10
11 15...

output:

0111110011
0110111111
1011001110
0101001011
0111110111
0011011000
1011110010
1000001101
1111000111
0101101111
1000001010
1010101010
0100000100
1011101110
1100011000
0000111110
0010100011
0110010101
1000111111
1101000001
0111110010
0011110100
0011101010
1001001111
0001010011
1010110110
0110111110
000...

result:

ok 400000 lines

Test #15:

score: 0
Accepted
time: 2300ms
memory: 14476kb

input:

500 124816
1 3
1 8
1 9
1 11
1 12
1 13
1 18
1 24
1 25
2 3
2 5
2 8
2 9
2 11
2 12
2 17
2 22
2 23
3 5
3 12
3 15
3 16
3 19
3 22
3 23
4 3
4 9
4 11
4 13
4 22
4 24
4 25
5 1
5 2
5 3
5 11
5 18
5 19
5 23
5 26
6 9
6 13
6 15
6 17
6 18
6 19
6 20
6 22
7 4
7 6
7 12
7 15
7 16
7 18
7 19
8 2
8 3
8 4
8 9
8 10
8 11
8 16...

output:

1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
111...

result:

ok 400000 lines

Test #16:

score: 0
Accepted
time: 2543ms
memory: 14440kb

input:

500 124872
1 2
1 6
1 14
1 16
2 1
2 4
2 6
2 10
2 16
2 17
2 18
2 25
2 26
2 28
3 1
3 2
3 5
3 11
3 12
3 16
3 17
3 24
4 1
4 5
4 9
4 15
4 20
4 25
4 30
5 1
5 2
5 3
5 6
5 7
5 11
5 12
5 15
5 20
5 22
5 26
5 27
5 30
6 1
6 13
6 14
6 15
6 16
6 17
6 19
6 28
7 1
7 8
7 9
7 10
7 13
7 19
7 21
7 23
7 26
8 1
8 7
8 12
8...

output:

0001111111
1101111010
1110011011
1011001101
0110111111
0000111000
1101010111
0101001111
1001101011
1111111101
1111110011
0010011010
0001000001
0101101111
1111000101
1100100001
0011010101
1010010110
0011111011
0000011011
1100010000
1011011011
1111010001
0110111011
0111000111
0111111000
1111000111
011...

result:

ok 400000 lines

Test #17:

score: 0
Accepted
time: 2332ms
memory: 14492kb

input:

500 124293
1 5
1 9
1 12
1 15
1 18
1 20
1 21
1 22
1 24
1 26
1 27
1 30
1 34
1 35
1 37
1 40
1 42
1 45
1 47
1 48
1 49
1 55
1 58
1 64
1 67
1 68
1 71
1 72
2 1
2 5
2 7
2 8
2 15
2 16
2 18
2 22
2 25
2 28
2 30
2 34
2 35
2 36
2 37
2 40
2 44
2 46
2 51
2 52
2 56
2 68
2 69
2 72
2 75
2 76
3 2
3 9
3 11
3 12
3 17
3 ...

output:

1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111101
1111111111
1111111111
1111111111
1111111111
1100100100
1111111111
1111111111
1111111111
111...

result:

ok 400000 lines