QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#763198 | #9310. Permutation Counting 4 | cbbdhz | WA | 81ms | 13884kb | C++20 | 1.2kb | 2024-11-19 18:51:02 | 2024-11-19 18:51:02 |
Judging History
answer
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1000010;
int l[N], r[N];
int head[N], nxt[N << 1], to[N << 1];
int cnt = 1;
bool ok = true;
int vis[N];
// 添加边
void add_edge(int a, int b) {
to[cnt] = b;
nxt[cnt] = head[a];
head[a] = cnt++;
}
// 判断是否有环
void dfs(int s, int f) {
for (int i = head[s]; i; i = nxt[i]) {
int nt = to[i];
if (nt == f) continue; // 跳过父节点
if (vis[nt]) { // 如果已经访问过,说明有环
ok = false;
return;
}
vis[nt] = 1;
dfs(nt, s);
}
}
void solve() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> l[i] >> r[i];
}
// 初始化
fill(vis, vis + n + 1, 0);
fill(head, head + n + 1, 0);
cnt = 1;
ok = true;
// 构造图
for (int i = 1; i <= n; i++) {
add_edge(l[i] - 1, r[i]);
add_edge(r[i], l[i] - 1);
}
vis[0] = 1;
dfs(0, 0);
if (ok) cout << 1 << '\n';
else cout << 0 << '\n';
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
int T;
cin >> T;
while (T--) {
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 13884kb
input:
4 5 1 2 1 5 1 2 1 2 2 2 5 1 1 2 4 2 3 5 5 3 4 5 3 5 1 2 3 4 3 5 3 3 5 1 5 1 4 4 5 5 5 1 2
output:
0 1 0 0
result:
ok 4 tokens
Test #2:
score: -100
Wrong Answer
time: 81ms
memory: 13884kb
input:
66725 14 7 7 4 6 7 8 8 13 2 13 6 13 6 10 14 14 1 10 9 11 7 9 3 8 4 12 5 12 12 2 6 3 6 7 11 2 5 1 1 6 12 8 12 2 3 7 9 7 8 1 10 1 4 10 4 8 4 4 6 10 9 10 2 3 2 7 1 3 3 4 2 2 3 10 20 3 12 10 14 19 20 19 20 1 9 7 9 13 16 17 17 16 18 2 11 5 19 6 17 11 17 3 6 3 11 7 20 8 17 3 18 10 15 9 20 16 5 10 2 10 2 1...
output:
1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 ...
result:
wrong answer 12th words differ - expected: '0', found: '1'