QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#621732 | #6421. Degree of Spanning Tree | gates_orz | WA | 1639ms | 3912kb | C++20 | 2.1kb | 2024-10-08 16:31:22 | 2024-10-08 16:31:23 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
//#define int LL
#define inl inline
const int N = 3e5 + 10;
const int M = N * 2;
//const int mod=998244353;
const int mod = 1000000007;
const double eps = 1e-8;
//const int mod=1e9+7;
typedef pair<int, int> PII;
//const int INF=0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
int n, m;
void become_faster() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
}
struct Node {
int u,v;
};
Node edge[N];
struct DSU {
vector<int> fa, siz;
DSU() {
}
DSU(int n) {
init(n);
}
void init(int n) {
fa.resize(n);
iota(fa.begin(), fa.end(), 0);
siz.assign(n, 1);
}
int find(int x) {
while (x != fa[x]) {
x = fa[x] = fa[fa[x]];
}
return x;
}
bool same(int x, int y) {
return find(x) == find(y);
}
bool merge(int x, int y) {
x = find(x);
y = find(y);
if (x == y) {
return false;
}
siz[x] += siz[y];
fa[y] = x;
return true;
}
int size(int x) {
return siz[find(x)];
}
};
bool work() {
DSU dsu(n+1);
shuffle(edge+1,edge+1+m,std::mt19937{std::random_device{}()});
vector<PII>res(n-1);
vector<int>d(n+1,0);
int idx=0;
for(int i=1;i<=m;i++) {
auto [u,v]=edge[i];
if(!dsu.same(u,v)) {
dsu.merge(u,v);
res[idx++]={u,v};
d[u]++;
d[v]++;
if(d[u]>n/2||d[v]>n/2)return false;
}
}
cout<<"Yes"<<"\n";
for(auto [t1,t2]:res)cout<<t1<<" "<<t2<<"\n";
return true;
}
void solve() {
cin>>n>>m;
for(int i=1;i<=m;i++) {
auto &[u,v]=edge[i];
cin>>u>>v;
}
for(int i=1;i<=400;i++) {
if(work()) {
return;
}
}
cout<<"No"<<endl;
}
signed main() {
become_faster();
int T = 1;
//T=read();
cin>>T;
//for(int i=1;i<=100;i++)solve(i);
while (T--) solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 3596kb
input:
2 6 9 1 2 1 3 1 4 2 3 2 4 3 4 4 5 4 6 4 6 3 4 1 3 2 3 3 3 1 2
output:
Yes 1 3 1 2 2 4 4 6 4 5 No
result:
ok 2 cases
Test #2:
score: -100
Wrong Answer
time: 1639ms
memory: 3912kb
input:
11140 10 15 9 6 5 7 6 5 2 3 7 5 7 5 3 10 9 7 5 5 9 1 7 5 2 8 7 5 4 3 6 2 9 19 3 7 3 9 2 8 2 8 3 6 5 1 1 8 8 9 8 3 4 8 5 5 3 1 4 3 1 3 8 6 1 3 7 4 4 3 8 8 12 20 10 2 5 5 2 4 3 3 3 3 5 11 9 2 5 5 7 12 11 3 3 3 3 5 5 3 3 1 4 6 7 11 6 8 4 5 6 12 6 5 8 18 4 2 4 3 2 4 2 4 4 3 4 8 2 2 6 7 2 4 6 2 1 4 8 7 4...
output:
Yes 2 3 6 2 9 7 7 5 9 1 4 3 2 8 9 6 3 10 Yes 2 8 3 9 8 6 4 3 1 8 4 8 7 4 5 1 Yes 4 6 3 5 10 2 6 8 4 5 11 3 9 2 3 1 6 12 7 12 2 4 Yes 4 8 4 2 3 5 7 5 8 7 4 1 6 2 Yes 9 7 1 2 5 6 8 7 4 3 5 1 5 7 2 3 Yes 8 10 2 5 1 9 10 2 1 7 4 1 3 2 6 1 2 6 Yes 4 6 3 4 1 3 2 4 7 1 5 7 Yes 12 3 3 13 5 4 9 10 2 6 11 13 ...
result:
wrong answer case 10709, participant does not find a solution but the jury does