QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#116339 | #6659. 외곽 순환 도로 2 | 1kri | 0 | 2ms | 9224kb | C++14 | 1.7kb | 2023-06-28 15:39:46 | 2023-06-28 15:39:47 |
Judging History
answer
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cassert>
#include <map>
#define ll long long
#define inf 1000000000000000000
using namespace std;
int n,depth[100005];
vector<int> e[100005];
vector<ll> c,w;
int l[100005],r[100005];
int tot,id[100005],o[100005];
ll a[100005];
int m,u[100005],v[100005];
ll val[100005];
void dfs(int now,ll s){
if (e[now].size()==0){
l[now]=tot;
id[tot]=now;
++tot;
r[now]=tot;
u[m]=l[now],v[m]=r[now],val[m]=s;
m++;
return;
}
l[now]=tot;
for (int i=0;i<(int)e[now].size();i++)
if (e[now].size()>1)dfs(e[now][i],c[e[now][i]]);
else dfs(e[now][i],min(s,c[e[now][i]]));
r[now]=tot;
if (now!=0&&e[now].size()>1){
u[m]=l[now],v[m]=r[now],val[m]=s;
m++;
}
return;
}
int dsu[100005],t[100005];
ll mn[100005];
int dsu_find(int x){
if (x==dsu[x])return x;
}
ll place_police(vector<int> P, vector<ll> _c, vector<ll> _w){
n=(int)P.size()+1;
for (int i=1;i<n;i++)e[P[i-1]].push_back(i),depth[i]=depth[P[i-1]]+1;
c.resize(n);
c[0]=inf;
for (int i=1;i<n;i++)c[i]=_c[i-1];
w=_w;
dfs(0,inf);
for (int i=0;i<tot;i++)
if ((depth[id[i]]&1)==(depth[id[(i+1)%tot]]&1))o[(i+1)%tot]=1,a[(i+1)%tot]=w[i];
else o[(i+1)%tot]=0,a[(i+1)%tot]=w[i];
ll ans=inf;
for (int i=0;i<(1<<m);i++){
for (int j=0;j<tot;j++)dsu[j]=j,t[j]=o[j],mn[j]=a[j];
ll s=0;
for (int j=0;j<m;j++){
if (!(i&(1<<j)))continue;
s+=val[j];
int x=dsu_find(u[j]),y=dsu_find(v[j]);
if (x!=y){
t[x]^=t[y],mn[x]=min(mn[x],mn[y]);
t[y]=mn[y]=0;
dsu[y]=x;
}
}
for (int j=0;j<tot;j++)
if (j==dsu_find(j))
if (t[j]==1)s+=mn[j];
ans=min(ans,s);
}
return ans;
}
详细
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 6
Accepted
time: 1ms
memory: 8380kb
input:
5 0 452912 0 820899 0 79369 0 232463 1000000000000 1000000000000 1000000000000 1000000000000
output:
532281
result:
ok single line: '532281'
Test #2:
score: -6
Wrong Answer
time: 1ms
memory: 9156kb
input:
6 0 581451 0 68556 0 918465 0 661406 0 41816 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000
output:
1311413
result:
wrong answer 1st lines differ - expected: '1000000110372', found: '1311413'
Subtask #2:
score: 0
Time Limit Exceeded
Test #28:
score: 0
Time Limit Exceeded
input:
99997 0 122727 0 267270 0 846212 0 454122 0 805668 0 614161 0 7805 0 173284 0 684707 0 269129 0 930945 0 1101 0 992427 0 297412 0 759787 0 227130 0 120418 0 90914 0 333684 0 46144 0 519912 0 171490 0 823586 0 121787 0 674177 0 560254 0 753090 0 853359 0 465464 0 655527 0 631303 0 919012 0 597126 0 1...
output:
Unauthorized output
result:
Subtask #3:
score: 0
Wrong Answer
Test #36:
score: 0
Wrong Answer
time: 2ms
memory: 9224kb
input:
11 0 9 0 8 2 0 3 7 3 1 2 6 0 0 7 7 7 1 9 6 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000
output:
16
result:
wrong answer 1st lines differ - expected: '1', found: '16'
Subtask #4:
score: 0
Skipped
Dependency #3:
0%
Subtask #5:
score: 0
Time Limit Exceeded
Test #77:
score: 0
Time Limit Exceeded
input:
50311 0 962897543825 1 887020369743 2 363658802934 3 481009844166 4 1099712574 5 858320882162 6 521927434762 7 379344260539 8 73024776148 9 634183458545 10 869560347910 11 81581323331 12 750044298516 13 307013017409 14 306226274039 15 423923546601 16 482114694167 17 849292461119 18 299993045938 19 7...
output:
Unauthorized output
result:
Subtask #6:
score: 0
Skipped
Dependency #1:
0%