#include <iostream>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <cstring>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <numeric>
#include <chrono>
#include <ctime>
#include <cmath>
#include <cctype>
#include <string>
#include <cstdio>
#include <iomanip>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <iterator>
using namespace std;
const int maxn = 2e5 + 7;
int n, m;
struct Input
{
int one;
int two;
int out;
}input[maxn];
int GetOut(int k) {
for (int i = 1; i <= m; i++)
{
int one = input[i].one;
int two = input[i].two;
int a = one < 0 ? -one > k:input[one].out;
int b = two < 0 ? -two > k:input[two].out;
input[i].out = !(a && b);
}
return input[m].out;
}
int GetResult(int last)
{
int left = 1, right = n;
while (left < right) {
int mid = (left + right) >> 1;
if (GetOut(mid) == last)
right = mid;
else
left = mid + 1;
}
return left;
}
int main()
{
int t;
cin >> t;
while (t--) {
cin >> n >> m;
for (int i = 1; i <= m; i++)
cin >> input[i].one >> input[i].two;
int v0 = GetOut(0);
int vn = GetOut(n);
if (v0 == vn) {
for (int i = 1; i <= n; i++) cout << "0";
}
else {
int x = GetResult(vn);
for (int i = 1; i < x; i++) cout << "0";
cout << "x";
for (int i = x + 1; i <= n; i++) cout << "1";
}
cout << endl;
}
return 0;
}
10-13
228
07-15
06-07
949
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交