QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#592377#837. Giant Penguinxwh_MarvelousRE 55ms120632kbC++143.0kb2024-09-26 22:09:512024-09-26 22:09:53

Judging History

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

  • [2024-09-26 22:09:53]
  • 评测
  • 测评结果:RE
  • 用时:55ms
  • 内存:120632kb
  • [2024-09-26 22:09:51]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
// #define int long long
//#define mod 1000000007
#define N 200005
#define pii pair<int,int>
#define fi first
#define se second
//#define rep(i,j,k) for(int i=j;i<=k;i++)
int n,m,k,q;
vector<int>mp[N],T[N],at[N];
vector<int>ct[N],lst;
vector<pii>que[N];
int vis[N];
void getT(int x,int fa=0){
	vis[x]=1;
	for(int v:mp[x]){
		if(v==fa)continue;
		if(vis[v]){at[x].push_back(v);continue;}
		T[v].push_back(x),T[x].push_back(v);getT(v,x);
	}
}
int d[12][N];
bool tg[N];
int imp[N][12],bc[N];
int bxhd[N][12];
int ans[N];
int sz[N];
int col[N];
int tot;
int rt;
void gtsz(int x,int fa){
	sz[x]=1;
	lst.push_back(x);
	for(int v:T[x]){
		if(v==fa||vis[v])continue;
		gtsz(v,x);
		sz[x]+=sz[v];
	}
}
int gtrt(int x){
	lst.clear();
	gtsz(x,x);
	int ret=0;
	function<void(int,int)>find=[&](int u,int fa){
		if(sz[x]/2>=sz[u]-1&&sz[x]-sz[u]>=sz[x]/2){ret=u;return;}
		for(int v:T[u]){if(fa==v||vis[v])continue;find(v,u);if(ret)return;}
	};
	find(x,x);
	assert(ret);
	return ret;
}
void gtd(int s,int *d,int pre){
	queue<int>q;
	q.push(s);
	for(int v:lst)d[v]=-1;
	d[s]=0;
	while(q.size()){
		int u=q.front();q.pop();
		for(int v:mp[u]){
			// cout<<v<<endl;
			if(col[v]<=pre||d[v]!=-1)continue;
			d[v]=d[u]+1;
			q.push(v);
		}
	}
}
void stcol(int x,int fa,int op){
	// cout<<x<<endl;
	col[x]=op;
	for(int v:T[x]){
		if(v==fa||vis[v])continue;
		stcol(v,x,op);
	}
}
void sol(int x,vector<pii>&qwq){
	// cout<<x<<endl;
	// for(auto op:qwq)cout<<op.fi<<' '<<op.se<<endl;cout<<endl;
	vis[x]=1;
	int pre=tot;
	col[x]=pre+1;
	for(int v:T[x]){if(vis[v])continue;stcol(v,v,++tot);}
	imp[x][++bc[x]]=x;
	gtd(x,d[1],pre);
	for(int v:lst){
		for(int u:at[v]){
			// cout<<u<<' '<<v<<endl;
			if(col[u]<=pre||col[u]==col[v])continue;
			imp[x][++bc[x]]=v;
			gtd(v,d[bc[x]],pre);
		}
	}
	for(auto w:qwq){
		int op=w.fi,v=w.se;
		// cout<<op<<' '<<v<<endl;
		if(op==1){
			for(int i=1;i<=bc[x];i++){
				bxhd[x][i]=min(bxhd[x][i],d[i][v]);
			}
		}else{
			for(int i=1;i<=bc[x];i++){
				ans[op]=min(ans[op],bxhd[x][i]+d[i][v]);
			}
		}
		if(v!=x){
			// cout<<col[v]<<endl;
			que[col[v]].push_back(w);
		}
	}
	qwq.clear();
	int g=0;
	for(int v:T[x]){
		if(vis[v])continue;
		g++;
		int rt=gtrt(v);
		// if(rt==8)cout<<pre+g<<' '<<tot<<endl;
		sol(rt,que[pre+g]);
	}
}
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>m>>k;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		mp[u].push_back(v),mp[v].push_back(u);
	}
	getT(1);
	memset(vis,0,sizeof(vis));
	memset(bxhd,0x3f,sizeof(bxhd));
	memset(ans,0x3f,sizeof(ans));
	cin>>q;
	for(int i=1;i<=q;i++){
		int op,v;
		cin>>op>>v;
		if(op==1&&tg[v])continue;
		if(op==1)tg[v]=1;
		if(op==1)que[0].push_back({op,v});
		else que[0].push_back({i,v});
	}
	// for(auto op:que[0])cout<<op.fi<<' '<<op.se<<endl;
	rt=gtrt(1);
	sol(rt,que[0]);
	for(int i=1;i<=q;i++){
		if(ans[i]>1e9)continue;
		cout<<ans[i]<<'\n';
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 40408kb

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: 27ms
memory: 51380kb

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: 55ms
memory: 120632kb

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: 43ms
memory: 83968kb

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: 27ms
memory: 65300kb

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: 20ms
memory: 55284kb

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: 0
Accepted
time: 22ms
memory: 59404kb

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:

6
5
4
3
2
1
2
3
4
5
6
7
8
9
10
10
9
8
7
8
9
10
9
8
7
7
7
6
6
5
5
4
4
3
3
1
0
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
11
11
10
10
9
9
8
8
9
9
10
10
11
11
10
10
9
9
8
8
6
5
4
3
2
1
2
3
4
5
6
7
8
9
10
10
9
8
7
8
9
10
9
8
7
7
7
6
6
5
5
4
4
3
3
1
0
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
11
11
10
10
9
9
...

result:

ok 199971 numbers

Test #9:

score: 0
Accepted
time: 35ms
memory: 69588kb

input:

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

output:

1
1
0
1
3
2
3
3
5
5
5
4
7
7
6
7
9
9
9
8
10
11
11
11
13
13
12
13
13
14
14
14
15
16
16
16
18
18
17
18
19
20
20
20
19
18
19
19
20
21
21
21
20
19
20
20
22
21
22
22
22
22
21
22
22
22
22
21
24
24
23
24
24
24
23
24
25
26
26
26
25
24
25
25
26
25
26
26
26
26
26
25
27
27
27
26
27
27
27
26
1
1
0
1
3
2
3
3
5
5
...

result:

ok 199981 numbers

Test #10:

score: 0
Accepted
time: 34ms
memory: 62368kb

input:

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

output:

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

result:

ok 199963 numbers

Test #11:

score: 0
Accepted
time: 33ms
memory: 64972kb

input:

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

output:

1
2
3
4
3
4
3
2
1
0
9
8
7
6
5
6
7
8
9
10
8
9
10
10
9
8
8
7
6
7
13
12
11
10
11
12
13
14
15
14
13
14
15
16
15
16
17
16
15
14
17
16
15
16
15
14
13
14
15
16
20
19
18
17
18
19
19
18
19
20
17
17
18
18
17
16
15
14
15
16
18
19
20
19
18
17
18
17
16
17
21
22
23
24
25
24
23
22
21
20
1
2
3
4
3
4
3
2
1
0
9
8
7
6...

result:

ok 199976 numbers

Test #12:

score: 0
Accepted
time: 30ms
memory: 60868kb

input:

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

output:

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

result:

ok 199969 numbers

Test #13:

score: -100
Runtime Error

input:

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

output:


result: