QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#95711 | #72. Mergers | eyiigjkn | 0 | 109ms | 59208kb | C++14 | 1.4kb | 2023-04-11 15:14:22 | 2023-04-11 15:14:24 |
Judging History
answer
# include <bits/stdc++.h>
using namespace std;
int rt=0,ans=0,cnt[500010],cnt2[500010],cnt3[500010],dep[500010],dfn[500010],in[500010],minn[1000010][20],tot=0,tot2=0;
vector<int> G[500010],vec[500010];
inline int getmin(int x,int y){return dep[x]<dep[y]?x:y;}
void dfs1(int u,int fa)
{
dfn[u]=++tot;
minn[in[u]=++tot2][0]=u;
for(int v:G[u])
{
if(v==fa) continue;
dep[v]=dep[u]+1;
dfs1(v,u);
minn[++tot2][0]=u;
}
}
void dfs2(int u,int fa)
{
for(int v:G[u])
{
if(v==fa) continue;
dfs2(v,u);
if(!cnt[v] && (!rt || dep[u]<dep[rt])) rt=u;
cnt[u]+=cnt[v];
cnt2[u]+=cnt2[v]+(!cnt[v]);
cnt3[u]+=(cnt2[v]+(!cnt[v])>0);
ans+=(!cnt[v] && !cnt2[v]);
}
}
int Lca(int u,int v)
{
u=in[u];v=in[v];
if(u>v) swap(u,v);
int k=__lg(v-u+1);
return getmin(minn[u][k],minn[v-(1<<k)+1][k]);
}
int main()
{
int n,m,u,v;
cin>>n>>m;
for(int i=1;i<n;i++)
{
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
dfs1(1,0);
for(int i=tot2;i;i--)
for(int j=1;i+(1<<j)<=tot2;j++)
minn[i][j]=getmin(minn[i][j-1],minn[i+(1<<j-1)][j-1]);
for(int i=1;i<=n;i++) scanf("%d",&u),vec[u].push_back(i);
for(int i=1;i<=m;i++)
{
int le=0,ri=0;
for(int u:vec[i])
{
cnt[u]++;
if(!le || dfn[u]<dfn[le]) le=u;
if(!ri || dfn[u]>dfn[ri]) ri=u;
}
cnt[Lca(le,ri)]-=vec[i].size();
}
dfs2(1,0);
ans=(ans+(cnt3[rt]==1)+1)/2;
cout<<ans<<endl;
return 0;
}
详细
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 10
Accepted
time: 2ms
memory: 34628kb
input:
1 1 1
output:
0
result:
ok single line: '0'
Test #2:
score: 0
Accepted
time: 3ms
memory: 35636kb
input:
3 2 2 1 3 1 2 2 1
output:
1
result:
ok single line: '1'
Test #3:
score: 0
Accepted
time: 0ms
memory: 36840kb
input:
5 2 1 2 4 5 4 2 3 4 2 1 2 1 2
output:
0
result:
ok single line: '0'
Test #4:
score: 0
Accepted
time: 2ms
memory: 35472kb
input:
7 7 5 7 4 7 6 4 1 3 2 6 3 4 6 7 2 4 5 3 1
output:
2
result:
ok single line: '2'
Test #5:
score: 0
Accepted
time: 1ms
memory: 37184kb
input:
10 5 1 3 9 6 8 6 3 10 3 2 1 6 8 7 2 5 9 4 1 1 3 2 2 5 3 1 4 2
output:
0
result:
ok single line: '0'
Test #6:
score: 0
Accepted
time: 3ms
memory: 35896kb
input:
100 1 7 97 63 10 65 17 26 85 50 92 92 20 28 83 92 51 5 4 56 2 18 27 16 73 24 78 73 10 35 6 49 10 20 11 42 23 30 7 24 69 38 87 53 45 25 3 93 57 64 47 84 73 20 91 97 31 99 45 20 38 76 9 98 94 40 72 77 38 37 7 88 8 37 78 73 8 90 61 45 68 32 29 55 37 46 88 17 14 46 12 83 100 35 40 71 20 32 92 57 88 92 6...
output:
0
result:
ok single line: '0'
Test #7:
score: 0
Accepted
time: 4ms
memory: 35952kb
input:
100 7 53 48 26 44 28 93 71 74 7 58 76 79 8 89 44 71 80 6 31 67 76 33 90 24 55 1 62 41 95 35 44 68 29 24 18 56 60 85 71 42 71 1 50 78 12 46 67 50 86 50 71 18 17 51 49 13 63 41 2 25 19 93 74 43 74 39 51 43 2 3 61 49 40 61 48 84 99 62 98 43 80 92 58 76 22 43 58 10 50 14 5 26 75 55 19 51 45 38 3 8 23 52...
output:
0
result:
ok single line: '0'
Test #8:
score: 0
Accepted
time: 1ms
memory: 35152kb
input:
9 6 7 6 9 1 2 4 4 5 9 2 8 6 9 3 8 1 3 1 6 4 4 2 5 5 6
output:
1
result:
ok single line: '1'
Test #9:
score: 0
Accepted
time: 4ms
memory: 36912kb
input:
100 6 45 58 90 65 28 24 76 32 97 92 50 81 38 17 98 40 81 21 68 56 36 78 45 12 74 31 72 30 20 35 61 85 39 8 69 40 54 60 80 25 5 95 95 27 54 70 19 21 20 12 85 93 16 88 95 48 46 14 45 72 40 7 37 14 72 47 22 10 45 31 75 69 32 6 73 22 56 99 11 35 43 55 1 56 15 56 35 42 100 55 49 34 76 33 87 45 78 70 90 8...
output:
1
result:
ok single line: '1'
Test #10:
score: -10
Wrong Answer
time: 4ms
memory: 33048kb
input:
99 6 44 2 26 24 42 67 94 92 77 97 79 58 50 75 2 12 52 39 30 60 97 94 32 62 12 3 68 8 48 85 18 40 94 37 42 10 7 37 24 12 40 84 41 71 87 49 37 51 22 55 10 9 16 14 52 85 20 86 41 65 69 10 12 55 79 80 50 80 37 16 94 63 93 2 95 31 46 53 65 83 47 9 84 92 4 23 11 98 24 28 54 66 12 72 58 49 40 64 73 39 30 4...
output:
2
result:
wrong answer 1st lines differ - expected: '1', found: '2'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 0
Wrong Answer
Test #66:
score: 22
Accepted
time: 109ms
memory: 59208kb
input:
100000 100000 14957 4585 67467 70858 61843 47396 50630 17382 61027 39858 94990 21698 10240 22940 23505 67581 91432 14182 22040 40125 24556 60351 75822 41519 82801 23601 90653 29138 85096 34582 99587 59109 8932 45189 18235 36632 43160 14939 67600 76675 60175 65542 99294 53955 46429 66931 16822 48854 ...
output:
25042
result:
ok single line: '25042'
Test #67:
score: 0
Accepted
time: 103ms
memory: 57988kb
input:
100000 50000 3065 28396 57666 99424 91431 92279 85107 9397 40557 2609 33754 76986 41982 13262 29268 57814 57080 70949 46008 55628 16881 69517 7925 97656 11194 27261 1023 44957 63053 94265 10347 36227 57858 50853 6707 37237 14023 64077 97278 89836 45448 37054 47530 12666 1789 54939 97196 38225 46942 ...
output:
4686
result:
ok single line: '4686'
Test #68:
score: -22
Wrong Answer
time: 62ms
memory: 55924kb
input:
100000 1000 15892 97873 74044 8515 2591 62904 30957 88449 38848 47109 51265 48273 55368 54375 67431 61662 74306 32695 87126 54432 72682 57299 66802 28200 3201 72387 26153 31276 44001 47337 27981 6477 15995 26102 90218 8030 97876 99025 38725 79748 61045 12996 27173 63491 31237 7298 64134 63770 59955 ...
output:
253
result:
wrong answer 1st lines differ - expected: '252', found: '253'
Subtask #5:
score: 0
Skipped
Dependency #1:
0%