QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#524093#5672. Connectivity Problemucup-team3699#ML 0ms3576kbC++14741b2024-08-19 10:18:272024-08-19 10:18:29

Judging History

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

  • [2024-08-19 10:18:29]
  • 评测
  • 测评结果:ML
  • 用时:0ms
  • 内存:3576kb
  • [2024-08-19 10:18:27]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N = 10005;
int dsu[N];
int Find(int x){
    if(dsu[x] < 0)
        return x;
    return dsu[x] = Find(dsu[x]);
}

bool Union(int x, int y){
    x = Find(x);
    y = Find(y);
    if(x == y){
        return 0;
    }
    if(dsu[x] > dsu[y]){
        swap(x, y);
    }
    dsu[x] += dsu[y];
    dsu[y] = x;
    return 1;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++){
        dsu[i] = -1;
    }

    int u, v;
    for(int i = 1; i <= n; i++){
        cin >> u >> v;
        if(Union(u, v)){
            cout << "N\n";
        }else{
            cout << "Y\n";
        }
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3576kb

input:

12
3 4
4 9
8 1
2 3
5 6
2 9
5 9
7 3
4 8
5 6
1 8
6 1

output:

N
N
N
N
N
Y
N
N
N
Y
Y
Y

result:

ok 12 lines

Test #2:

score: -100
Memory Limit Exceeded

input:

100
26 39
2 21
4 17
2 16
12 19
27 0
8 43
10 12
6 29
5 9
19 32
13 47
13 36
3 6
13 18
9 40
11 40
29 16
7 24
10 35
19 41
6 24
28 21
26 35
23 47
2 30
19 17
10 6
22 6
15 25
19 11
2 8
11 25
14 23
27 1
1 16
16 0
23 34
2 25
10 17
3 35
23 37
13 0
22 7
27 29
15 13
10 5
18 40
28 46
19 0
23 40
4 46
19 3
20 39
1...

output:


result: