結果
| 問題 | No.3499 I Love DAG |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-03-28 02:21:15 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,763 bytes |
| 記録 | |
| コンパイル時間 | 9,002 ms |
| コンパイル使用メモリ | 445,396 KB |
| 実行使用メモリ | 39,616 KB |
| 最終ジャッジ日時 | 2026-04-17 19:48:41 |
| 合計ジャッジ時間 | 15,861 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 1 |
| other | TLE * 1 -- * 39 |
ソースコード
#include "testlib.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
const int MIN_N = 3;
const int MAX_N = 20000;
const int MAX_Q = 10000;
struct DSU {
vector<int> parent;
DSU(int n) {
parent.resize(n);
iota(parent.begin(), parent.end(), 0);
}
int find(int i) {
if (parent[i] == i)
return i;
return parent[i] = find(parent[i]);
}
bool unite(int i, int j) {
int root_i = find(i);
int root_j = find(j);
if (root_i != root_j) {
parent[root_i] = root_j;
return true;
}
return false;
}
};
int main() {
registerValidation();
int N = inf.readInt(MIN_N, MAX_N);
inf.readSpace();
long long max_q_limit = min((long long)MAX_Q, 1LL * N * (N - 1) / 2);
int Q = inf.readInt(1, max_q_limit);
inf.readEoln();
DSU dsu(N);
set<pair<int, int>> edges;
for (int i = 0; i < N - 1; ++i) {
int u = inf.readInt(0, N - 1);
inf.readSpace();
int v = inf.readInt(0, N - 1);
inf.readEoln();
ensure(u != v);
int min_v = min(u, v);
int max_v = max(u, v);
ensure(edges.insert({min_v, max_v}).second);
ensure(dsu.unite(u, v));
}
for(int i = 0; i < N - 1; ++i){
cout << 0 << (i == N - 2 ? "\n" : " ");
cout.flush();
}
for (int i = 0; i < Q; ++i) {
int u = inf.readInt(0, N - 1);
inf.readSpace();
int v = inf.readInt(0, N - 1);
inf.readEoln();
ensure(u != v);
int min_v = min(u, v);
int max_v = max(u, v);
ensure(edges.insert({min_v, max_v}).second);
cout << 0 << endl;
}
inf.readEof();
}