QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#785531#6421. Degree of Spanning TreeharlemAC ✓153ms13340kbC++143.3kb2024-11-26 18:09:322024-11-26 18:09:36

Judging History

你现在查看的是最新测评结果

  • [2024-11-26 18:09:36]
  • 评测
  • 测评结果:AC
  • 用时:153ms
  • 内存:13340kb
  • [2024-11-26 18:09:32]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef __int128 i128;
typedef double db;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<int,ll> pil;
typedef pair<ll,int> pli;
template <typename Type>
using vec=vector<Type>;
template <typename Type>
using grheap=priority_queue<Type>;
template <typename Type>
using lrheap=priority_queue<Type,vector<Type>,greater<Type> >;
#define fir first
#define sec second
#define pub push_back
#define pob pop_back
#define puf push_front
#define pof pop_front
#define chmax(a,b) a=max(a,b)
#define chmin(a,b) a=min(a,b)
#define rep(i,x,y) for(int i=x;i<=y;i++)
#define per(i,x,y) for(int i=x;i>=y;i--)

const int inf=0x3f3f3f3f;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int mod=1e9+7/*998244353*/;

const int N=1e5+5,M=2e5+5;

int n,m;
int u,v;
int rt;
int dg[N], d[N];
struct edge{
    int a,b;
}es[M];
bool use[M];
int dte[N];

struct DSU{
    int fa[N];
    void init(int n){
        rep(i,1,n)fa[i]=i;
    }
    int find(int x){
        if(fa[x]!=x)fa[x]=find(fa[x]);
        return fa[x];
    }
    void merge(int a,int b){
        a=find(a);b=find(b);
        fa[a]=b;
    }
    bool same(int a,int b){
        return find(a)==find(b);
    }
}dsu;

void outans(){
    cout<<"Yes\n";
    rep(k,1,m){
        if(use[k])cout<<es[k].a<<" "<<es[k].b<<"\n";
    }
}

vec<int> g[N];
bool vis[N];
void dfs(int now,int fa){
    vis[now]=true;
    dsu.merge(now,fa);
    for(auto nxt:g[now]){
        if(vis[nxt])continue;
        dfs(nxt,fa);
    }
}

void solve(){
    cin>>n>>m;
    rep(i,1,n)dg[i]=0;
    rep(i,1,m){
        cin>>u>>v;
        use[i]=0;
        es[i].a=u;es[i].b=v;
    }
    dsu.init(n);
    rep(i,1,n)g[i].clear();
    rep(i,1,m){
        if(!dsu.same(es[i].a,es[i].b)){
            dsu.merge(es[i].a,es[i].b);
            use[i]=1;
            dg[es[i].a]++;
            dg[es[i].b]++;
        }
    }
    rt=0;
    rep(i,1,n){
        if(dg[i]>n/2){
            rt=i;
            break;
        }
    }
    if(!rt){
        outans();
        return;
    }
    rep(i,1,m) if(use[i]){
        if(es[i].a==rt)dte[es[i].b]=i;
        if(es[i].b==rt)dte[es[i].a]=i;
    }
    rep(i,1,m){
        if(use[i]){
            g[es[i].a].pub(es[i].b);
            g[es[i].b].pub(es[i].a);
        }
    }
    dsu.init(n);
    rep(i,1,n)vis[i]=false;
    vis[rt]=true;
    for(auto son:g[rt]){
        dfs(son,son);
    }
    rep(i,1,m){
        if(use[i])continue;
        if(dsu.same(es[i].a,es[i].b)||es[i].a==rt||es[i].b==rt)continue;
        int fa = dsu.find(es[i].a), fb = dsu.find(es[i].b);
        if(dg[fa] > dg[fb]) swap(fa, fb);
        dg[es[i].a]++;dg[es[i].b]++;
        dg[rt]--,dg[fb]--;
        if(dg[es[i].a]>n/2||dg[es[i].b]>n/2){
            dg[es[i].a]--;dg[es[i].b]--;
            dg[rt]++;dg[fb]++;
            continue;
        }
        use[i]=true;
        use[dte[fb]]=false;
        dsu.merge(fb,fa);
        if(dg[rt]<=n/2)break;
    }
    if(dg[rt]<=n/2)outans();
    else cout<<"No\n";
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int t;cin>>t;
    while(t--)solve();
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 2ms
memory: 7484kb

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 2
1 3
1 4
4 5
4 6
No

result:

ok 2 cases

Test #2:

score: 0
Accepted
time: 104ms
memory: 9072kb

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
9 6
5 7
6 5
2 3
3 10
9 1
2 8
4 3
6 2
Yes
3 7
3 9
2 8
3 6
5 1
1 8
8 9
4 8
Yes
10 2
2 4
5 11
9 2
7 12
11 3
3 1
4 6
7 11
6 8
4 5
Yes
4 2
4 3
4 8
6 7
6 2
1 4
7 5
Yes
6 5
5 7
5 9
4 3
2 9
2 3
8 7
5 1
Yes
10 2
2 6
3 2
1 9
8 10
4 6
6 1
2 5
1 7
Yes
5 7
5 4
7 1
2 6
6 7
1 3
Yes
12 3
1 13
7 8
8 2
10 6
1 6
1...

result:

ok 11140 cases

Test #3:

score: 0
Accepted
time: 132ms
memory: 8940kb

input:

5
100000 197799
37555 22723
91160 32701
6451 4416
43186 26432
9750 82955
28292 33907
91534 78442
17771 67061
40351 28116
21494 23114
34672 66640
72636 95093
13033 6538
53698 87837
79541 71230
53985 63500
84753 5378
67971 56748
90951 20169
4465 97293
18331 53564
41043 95738
48579 96439
90865 7526
391...

output:

Yes
37555 22723
91160 32701
6451 4416
43186 26432
9750 82955
28292 33907
91534 78442
17771 67061
40351 28116
21494 23114
34672 66640
72636 95093
13033 6538
53698 87837
79541 71230
53985 63500
84753 5378
67971 56748
90951 20169
4465 97293
18331 53564
41043 95738
48579 96439
90865 7526
39102 81376
166...

result:

ok 5 cases

Test #4:

score: 0
Accepted
time: 105ms
memory: 12724kb

input:

5
100000 100000
98195 31806
98195 70169
92153 98195
98195 46320
94369 56771
94369 49988
74295 98195
33796 98195
89903 94369
98195 1814
82388 98195
10189 94369
98195 6267
29845 98195
22425 94369
6241 98195
98195 33204
66516 98195
94369 71364
26277 94369
94369 94722
94369 25349
14629 98195
9329 98195
...

output:

Yes
98195 31806
98195 70169
92153 98195
98195 46320
94369 56771
94369 49988
74295 98195
33796 98195
89903 94369
98195 1814
82388 98195
10189 94369
98195 6267
29845 98195
22425 94369
6241 98195
98195 33204
66516 98195
94369 71364
26277 94369
94369 94722
94369 25349
14629 98195
9329 98195
98195 38219
...

result:

ok 5 cases

Test #5:

score: 0
Accepted
time: 153ms
memory: 13340kb

input:

5
100000 149998
50735 5447
50735 24875
15119 49666
50735 30352
44756 49555
26546 32695
98445 50735
71657 50735
92212 50735
50735 19382
30935 50735
43688 46767
54630 54562
31371 50735
48877 50735
78593 76833
74317 37258
50735 48236
67116 50735
36579 50735
37536 44353
50735 46602
35088 29568
86657 507...

output:

Yes
50735 5447
15119 49666
50735 30352
44756 49555
26546 32695
98445 50735
92212 50735
50735 19382
43688 46767
54630 54562
48877 50735
78593 76833
74317 37258
36579 50735
37536 44353
50735 46602
35088 29568
86657 50735
50735 61268
37159 50735
35719 50735
78147 8985
50735 58204
5089 21674
3651 54202
...

result:

ok 5 cases

Test #6:

score: 0
Accepted
time: 88ms
memory: 12684kb

input:

11102
14 14
9 10
10 14
9 11
10 2
9 14
9 5
10 13
9 8
4 9
3 10
10 1
12 10
10 6
9 7
6 6
3 2
3 5
2 6
1 6
3 4
3 6
5 5
3 2
2 1
4 5
2 5
5 3
8 8
5 6
4 6
8 6
8 4
6 1
8 3
2 8
7 8
12 12
8 12
12 2
4 12
9 12
12 3
1 12
1 8
6 8
11 8
7 8
8 10
12 5
15 15
9 15
6 15
13 8
15 3
8 11
15 12
8 2
15 4
8 10
15 8
15 14
8 4
7 ...

output:

Yes
10 14
9 11
10 2
9 14
9 5
10 13
9 8
4 9
3 10
10 1
12 10
10 6
9 7
Yes
3 2
3 5
2 6
1 6
3 4
Yes
3 2
2 1
4 5
5 3
Yes
5 6
4 6
8 6
6 1
8 3
2 8
7 8
Yes
12 2
4 12
9 12
12 3
1 12
1 8
6 8
11 8
7 8
8 10
12 5
Yes
9 15
6 15
13 8
15 3
8 11
15 12
8 2
15 4
8 10
15 14
8 4
7 8
5 8
1 15
Yes
7 3
10 3
3 12
5 9
9 8
1 ...

result:

ok 11102 cases

Test #7:

score: 0
Accepted
time: 132ms
memory: 12796kb

input:

11102
14 19
9 3
3 6
8 3
2 14
7 3
11 3
13 9
3 14
3 5
2 3
7 4
1 10
13 3
4 3
3 1
3 10
12 8
11 6
3 12
11 15
9 11
10 7
1 2
9 6
11 2
11 10
8 11
11 5
3 8
11 4
11 3
11 7
1 11
5 4
6 11
5 6
1 2
4 3
3 5
1 3
5 4
3 2
12 16
8 11
12 10
12 3
5 7
12 5
1 12
9 4
12 2
6 12
12 8
10 1
12 11
7 12
12 9
3 2
4 12
6 7
3 1
6 3...

output:

Yes
9 3
8 3
2 14
7 3
11 3
13 9
3 14
3 5
7 4
1 10
3 1
12 8
11 6
Yes
9 11
10 7
1 2
9 6
11 2
11 10
8 11
11 5
3 8
5 4
Yes
1 2
3 5
1 3
5 4
Yes
8 11
12 10
12 3
5 7
12 5
9 4
6 12
12 8
10 1
12 9
3 2
Yes
3 4
4 6
3 2
5 3
5 1
Yes
4 3
1 6
2 5
1 5
1 4
Yes
1 2
3 6
7 5
4 11
2 6
9 6
7 6
6 4
3 10
8 9
Yes
5 1
4 1
3 5...

result:

ok 11102 cases

Test #8:

score: 0
Accepted
time: 96ms
memory: 7316kb

input:

100000
5 7
2 5
1 4
2 1
1 3
5 1
4 2
2 3
5 7
2 4
4 3
2 1
4 5
2 5
1 4
3 2
5 7
5 1
4 2
4 5
4 3
4 1
3 1
2 1
5 7
4 1
4 3
3 5
2 5
4 5
2 4
1 5
5 7
5 2
2 1
5 4
2 4
4 3
3 2
1 4
5 7
2 4
5 1
1 3
2 1
2 3
4 1
2 5
5 7
5 4
4 2
5 2
3 5
4 1
5 1
4 3
5 7
1 5
2 3
2 5
2 4
3 5
4 5
1 2
5 7
1 3
5 2
2 4
1 2
5 3
2 3
4 3
5 7
3...

output:

Yes
2 5
1 4
1 3
4 2
Yes
4 3
2 1
4 5
2 5
Yes
5 1
4 2
4 3
3 1
Yes
4 1
4 3
3 5
2 5
Yes
5 2
2 1
5 4
4 3
Yes
2 4
5 1
1 3
2 3
Yes
4 2
5 2
3 5
4 1
Yes
1 5
2 3
2 4
3 5
Yes
1 3
5 2
2 4
5 3
Yes
3 1
2 1
5 4
5 3
Yes
5 3
2 4
1 2
1 5
Yes
5 4
2 1
5 3
2 4
Yes
1 3
5 4
5 2
3 4
Yes
4 2
4 3
5 2
5 1
Yes
1 2
4 3
3 1
5 4
...

result:

ok 100000 cases

Test #9:

score: 0
Accepted
time: 61ms
memory: 8168kb

input:

1000
5 970
3 1
4 3
3 1
1 3
2 3
2 3
3 2
2 3
2 3
2 3
3 2
3 2
3 1
2 3
3 2
3 2
2 3
2 3
3 2
3 2
2 3
3 2
2 3
2 3
3 5
2 3
2 3
2 3
3 2
3 2
5 3
2 3
3 2
2 3
3 2
3 2
3 1
3 2
3 5
3 2
2 1
2 3
3 5
2 3
2 3
5 3
3 2
3 1
3 2
3 2
1 3
4 3
3 1
4 3
5 3
3 2
3 4
2 3
3 5
2 3
3 1
3 2
2 3
4 3
2 3
2 3
1 3
3 1
2 3
3 2
3 2
2 3
2...

output:

Yes
4 3
3 5
2 1
5 2
Yes
3 1
3 4
5 2
4 5
Yes
3 5
1 5
2 4
4 3
Yes
4 2
4 1
5 3
5 1
Yes
1 3
4 3
5 2
5 1
Yes
1 5
3 1
2 4
2 3
Yes
4 3
4 5
2 1
1 5
Yes
3 1
1 2
4 5
4 2
Yes
4 2
5 4
1 3
5 3
Yes
5 1
3 1
2 4
5 2
Yes
3 5
3 2
1 4
4 5
Yes
5 2
5 3
4 1
4 3
Yes
1 2
3 2
4 5
1 4
Yes
5 4
5 3
1 2
3 2
Yes
5 2
3 2
4 1
3 1
...

result:

ok 1000 cases

Test #10:

score: 0
Accepted
time: 79ms
memory: 7452kb

input:

100000
5 5
5 1
1 3
3 5
2 3
4 1
5 5
3 1
3 4
1 5
5 2
5 3
5 5
2 5
1 2
4 5
4 3
2 4
5 5
1 2
4 3
2 4
4 1
5 1
5 5
5 2
3 2
1 4
1 2
3 1
5 5
2 5
1 3
4 5
1 2
5 1
5 5
1 5
5 2
4 5
1 4
3 4
5 5
4 2
1 2
1 4
5 1
3 4
5 5
1 3
5 2
5 4
5 1
1 4
5 5
2 3
4 5
2 4
3 4
1 3
5 5
1 4
4 5
2 5
3 4
5 3
5 5
4 1
4 5
4 3
3 2
1 3
5 5
3...

output:

Yes
5 1
3 5
2 3
4 1
Yes
3 1
3 4
1 5
5 2
Yes
2 5
1 2
4 5
4 3
Yes
1 2
4 3
2 4
5 1
Yes
5 2
3 2
1 4
3 1
Yes
2 5
1 3
4 5
1 2
Yes
1 5
5 2
1 4
3 4
Yes
4 2
1 2
5 1
3 4
Yes
1 3
5 2
5 4
1 4
Yes
2 3
4 5
2 4
1 3
Yes
1 4
2 5
3 4
5 3
Yes
4 1
4 5
3 2
1 3
Yes
3 2
1 5
4 1
5 2
Yes
4 2
2 1
5 1
3 5
Yes
2 1
3 4
5 1
5 3
...

result:

ok 100000 cases