QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#655689 | #9484. Colored Complete Graph | ucup-team3931# | TL | 0ms | 0kb | C++14 | 1.5kb | 2024-10-19 09:11:08 | 2024-10-19 09:11:09 |
answer
#include <bits/stdc++.h>
#define eb emplace_back
#define mp make_pair
#define fi first
#define se second
#define F(i, x, y) for (int i = (x); i <= (y); i++)
#define R(i, x, y) for (int i = (x); i >= (y); i--)
#define FIO(FILE) freopen(FILE".in", "r", stdin), freopen(FILE".out", "w", stdout)
using namespace std;
typedef long long ll;
typedef pair<int, int> pi;
bool Mbe;
const int N = 1e5 + 5;
int n, to[N];
vector<int> o[2], g[N][2];
int q(int u, int v) {
printf("! %d %d\n", u, v);
char c[10]; scanf("%s", c);
return c[0] == 'R' ? 0 : 1;
}
void add(int u, int v, int o) {
g[u][o].eb(v), g[v][o].eb(u);
}
void solve() {
cin >> n;
F (i, 2, n) {
int c = q(1, i);
add(1, i, c);
o[c].eb(i);
}
int cur = 0;
if (o[cur].empty()) {
printf("!\n");
F (i, 2, n)
printf("%d %d\n", 1, i);
return;
}
while (!o[cur ^ 1].empty()) {
int u = o[cur].back();
while (!o[cur ^ 1].empty() && q(u, o[cur ^ 1].back()) == cur)
add(u, o[cur ^ 1].back(), cur), o[cur ^ 1].pop_back();
if (!o[cur ^ 1].empty()) add(u, o[cur ^ 1].back(), cur ^ 1), o[cur].pop_back(), cur ^= 1;
}
printf("!\n");
F (i, 1, n)
for (int j : g[i][cur])
if (i < j) printf("%d %d\n", i, j);
}
bool Med;
int main() {
// FIO("");
// ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
// cerr << (&Mbe - &Med) / 1048576.0 << " MB\n";
int T = 1;
// cin >> T;
while (T--) solve();
// cerr << (int)(1e3 * clock() / CLOCKS_PER_SEC) << " ms\n";
return 0;
}
詳細信息
Test #1:
score: 0
Time Limit Exceeded
input:
3