QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#328567#837. Giant PenguinCharlieVinnieRE 25ms11436kbC++172.7kb2024-02-15 21:14:342024-02-15 21:14:36

Judging History

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

  • [2024-02-15 21:14:36]
  • 评测
  • 测评结果:RE
  • 用时:25ms
  • 内存:11436kb
  • [2024-02-15 21:14:34]
  • 提交

answer

#include "bits/stdc++.h"
#ifdef DEBUG
#include "PrettyDebug.hpp"
#else
#define debug(...) [](auto...){}(__VA_ARGS__)
#define debuga(...) [](auto...){}(__VA_ARGS__)
#endif
#define For(i,a,b) for(int i=a;i<=b;i++)
#define Rev(i,a,b) for(int i=a;i>=b;i--)
#define Fin(file) freopen(file,"r",stdin)
#define Fout(file) freopen(file,"w",stdout)
using namespace std; typedef long long ll;
constexpr int N=1e5+5; using pii = pair<int,int>;
int n,m,K,Q,col[N],colcnt,C,siz[N],cursiz,vis[N],V,ins[N],tfa[N],mx[N],dis[N]; vector<int> to[N],ed[N]; vector<int> tmp,qwq; vector<pii> lis[N];
void dfs0(int u){
    mx[u]=0; siz[u]=1; vis[u]=V; qwq.push_back(u);
    for(int v:to[u]) if(col[v]==C&&vis[v]!=V){
        ed[u].push_back(v); ed[v].push_back(u);
        dfs0(v); siz[u]+=siz[v]; mx[u]=max(mx[u],siz[v]);
    }
}
void dfs(int u,int pa){
    siz[u]=1; ins[u]=1; qwq.push_back(u);
    for(int v:ed[u]) if(v!=pa) tfa[v]=u,dfs(v,u),siz[u]+=siz[v];
    for(int v:to[u]) if(v!=pa&&col[v]==C&&tfa[v]!=u&&!ins[v]) tmp.push_back(u);
    ins[u]=0;
}
void gcol(int u,int pa) { col[u]=C; for(int v:ed[u]) if(v!=pa) gcol(v,u); }
void solve(int rt){
    debug(rt);
    C=col[rt]; V++; qwq.clear(); dfs0(rt); for(int u:qwq) if(mx[u]<=siz[rt]/2&&siz[rt]-siz[u]<=siz[rt]/2) { rt=u; break; }
    tmp={rt}; dfs(rt,0); sort(tmp.begin(),tmp.end()); tmp.erase(unique(tmp.begin(),tmp.end()),tmp.end());
    assert(tmp.size()<=2u*K+1);
    debug("hey");
    for(int S:tmp){
        for(int u:qwq) dis[u]=1e9;
        queue<int> q; q.push(S); dis[S]=0;
        while(q.size()){
            int u=q.front(); q.pop(); lis[u].emplace_back(S,dis[u]);
            for(int v:to[u]) if(col[v]==C&&dis[v]==1e9) dis[v]=dis[u]+1,q.push(v);
        }
    }
    for(int u:ed[rt]) C++,gcol(u,rt);
    auto awa=ed[rt]; for(int u:qwq) ed[u].clear();
    for(int u:awa) solve(u);
}
signed main(){
    // Fin("hh.in");
    atexit([](){cerr<<"Time = "<<clock()<<" ms"<<endl;});
    ios::sync_with_stdio(0); cin.tie(0);
    cin>>n>>m>>K; For(i,1,m) { int x,y; cin>>x>>y; to[x].push_back(y); to[y].push_back(x); }
    cursiz=n; solve(1); For(i,1,n) sort(lis[i].begin(),lis[i].end()),lis[i].erase(unique(lis[i].begin(),lis[i].end()),lis[i].end());
    For(i,1,n) dis[i]=1e9;
    cin>>Q; while(Q--){
        int op,x; cin>>op>>x;
        if(op==1) { for(auto [u,d]:lis[x]) dis[u]=min(dis[u],d); }
        else { int ans=1e9; for(auto [u,d]:lis[x]) ans=min(ans,dis[u]+d);; cout<<ans<<'\n'; }
    }
    return 0;
}

// CONTINUE, NON-STOPPING, FOR CHARLIEY
// START TYPING IF YOU DON'T KNOW WHAT TO DO
// STOP TYPING IF YOU DON'T KNOW WHAT YOU'RE DOING

// Started Coding On: February 15 Thu, 20 : 22 : 03

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

5 4 0
1 2
2 3
3 4
4 5
7
1 1
1 5
2 1
2 2
2 3
2 4
2 5

output:

0
1
2
1
0

result:

ok 5 number(s): "0 1 2 1 0"

Test #2:

score: 0
Accepted
time: 0ms
memory: 11304kb

input:

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

output:

2
2

result:

ok 2 number(s): "2 2"

Test #3:

score: 0
Accepted
time: 25ms
memory: 10992kb

input:

100 99 0
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 52
52...

output:

99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83
82
81
80
79
78
77
76
75
74
73
72
71
70
69
68
67
66
65
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
99
98
97
9...

result:

ok 199968 numbers

Test #4:

score: 0
Accepted
time: 18ms
memory: 11252kb

input:

100 99 0
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61...

output:

1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
...

result:

ok 199966 numbers

Test #5:

score: 0
Accepted
time: 19ms
memory: 10920kb

input:

100 99 0
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
2 25
1 26
1 27
1 28
2 29
1 30
1 31
1 32
1 33
2 34
1 35
1 36
2 37
1 38
4 39
1 40
1 41
2 42
2 43
1 44
1 45
2 46
1 47
1 48
1 49
2 50
2 51
1 52
1 53
1 54
2 55
3 56
2 57
1 58
2 59
2 60
3 61...

output:

2
3
3
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
4
3
3
3
4
3
3
3
3
4
3
3
4
3
2
3
3
4
4
3
3
4
3
3
3
4
4
3
3
3
4
4
4
3
4
4
4
3
3
4
3
3
3
4
4
4
3
3
3
3
3
4
3
3
3
3
3
3
3
3
3
3
4
4
3
0
3
3
4
3
4
3
3
4
3
4
2
3
3
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
4
3
3
3
4
3
3
3
3
4
3
3
4
3
2
3
3
4
4
3
3
4
3
3
3
4
...

result:

ok 199964 numbers

Test #6:

score: 0
Accepted
time: 21ms
memory: 10692kb

input:

100 99 0
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
28 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
39 41
41 42
41 43
41 44
44 45
44 46
46 47
44 48
48 49
48 50
50 51
50 52
51...

output:

68
67
66
65
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
42
40
39
38
37
36
35
34
33
32
31
32
30
31
31
29
30
30
31
28
29
27
28
26
29
25
24
23
24
22
25
26
21
22
23
20
19
20
18
17
18
16
15
14
16
13
14
15
12
16
11
10
9
10
8
16
7
6
5
6
7
4
7
8
9
10
11
3
10
2
1
0
68
67
66
65
64
...

result:

ok 199966 numbers

Test #7:

score: 0
Accepted
time: 25ms
memory: 11000kb

input:

100 102 10
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 52
...

output:

24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
37
36
35
34
33
32
31
30
29
28
27
26
25
26
27
28
29
30
31
32
33
34
35
36
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
1...

result:

ok 199973 numbers

Test #8:

score: -100
Runtime Error

input:

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

output:


result: