QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#135159#6634. Central Subsetwtn135687#RE 2ms6624kbC++141.5kb2023-08-05 12:16:162023-08-05 12:16:20

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-08-05 12:16:20]
  • 评测
  • 测评结果:RE
  • 用时:2ms
  • 内存:6624kb
  • [2023-08-05 12:16:16]
  • 提交

answer

#include<bits/stdc++.h>
#define pll pair<ll, ll>
using namespace std;
typedef long long ll;
#define int ll

const int N = 1e5+10;
const int M = 1e6 + 7;

int n, m, fa[N], mx, dis[N];
vector<ll> edge[N], ans;

void init(){
    for (int i = 0; i <= n; i++)fa[i] = i, edge[i].clear(), dis[i] = 1e18;
    ans.clear();
    mx = sqrt(n);
    if (mx * mx < n)mx++;
}

ll find(ll x){
    return x == fa[x] ? x : fa[x] = find(fa[x]);
}

void merge(ll x, ll y){
    x = find(x);
    y = find(y);
    fa[x] = fa[y];
}

void dfs(ll x, ll fa){
    // cerr << x << " " << fa << endl;
    dis[x] = min(dis[x], dis[fa] + 1);
    if (dis[x] >= mx){
        ans.push_back(x);
        dis[x] = 0;
    }
    for (auto i : edge[x]){
        if (i == fa)continue;
        dfs(i, x);
        dis[x] = min(dis[x], dis[i] + 1);
    }
}

inline void solve(){
    cin >> n >> m;
    init();
    // cerr << n << " " << m << endl;
    for (int i = 1, u, v; i <= m; i++){
        cin >> u >> v;
        if (find(u) == find(v))continue;
        merge(u, v);
        edge[u].push_back(v);
        edge[v].push_back(u);
        // cerr << u << " " << v << endl;
    }
    dfs(1, 0);
    assert(ans.size() <= mx);
    cout << ans.size() << endl;
    for (auto i : ans)cout << i << " ";
    cout << endl;
    // cerr << n << " " << m << endl;
}



signed main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int WTN666=1;cin>>WTN666;
    while(WTN666--){
        solve();
    }
}

详细

Test #1:

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

input:

2
4 3
1 2
2 3
3 4
6 7
1 2
2 3
3 1
1 4
4 5
5 6
6 4

output:

2
1 3 
2
1 6 

result:

ok correct (2 test cases)

Test #2:

score: -100
Dangerous Syscalls

input:

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

output:

4
1 5 9 13 
3
1 6 5 
2
1 9 
1
1 
1
1 
3
1 4 7 
1
1 
3
1 11 13 
3
1 6 15 
1
1 
4
1 6 11 16 
2
1 4 
2
1 5 
2
1 10 
1
1 
4
1 5 9 13 
3
1 7 6 
1
1 

result: