QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#135082#6634. Central Subsetwtn135687#RE 1ms6936kbC++141.5kb2023-08-05 11:15:172023-08-05 11:15:18

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 11:15:18]
  • 评测
  • 测评结果:RE
  • 用时:1ms
  • 内存:6936kb
  • [2023-08-05 11:15:17]
  • 提交

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], vis[N], mx;
vector<ll> edge[N], ans;

void init(){
    for (int i = 1; i <= n; i++)fa[i] = i, vis[i] = 0, edge[i].clear();
    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);
}

inline void solve(){
    cin >> n >> m;
    init();
    for (int i = 1, u, v; i <= m; i++){
        cin >> u >> v;
        u = find(u), v = find(v);
        if (u == v)continue;
        merge(u, v);
        edge[u].push_back(v);
        edge[v].push_back(u);
    }
    priority_queue<pll, vector<pll>, greater<pll>> q;
    q.push({n + 1, 1});
    while (q.size()){
        pll temp = q.top();
        q.pop();
        ll dis = temp.first, x = temp.second;
        if (vis[x])continue;
        vis[x] = 1;
        if (dis > mx){
            ans.push_back(x);
            dis = 0;
        }
        for (auto i : edge[x]){
            if (vis[i])continue;
            q.push({dis + 1, i});
        }
    }
    assert(ans.size() <= mx);
    cout << ans.size() << endl;
    for (auto i : ans)cout << i << " ";
    cout << endl;
}



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

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 6936kb

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 4 
1
1 

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:

3
1 6 11 
1
1 
3
1 6 10 
1
1 
1
1 
3
1 5 9 
1
1 
3
1 6 12 

result: