Submission #2119095
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
typedef pair<int,P> P1;
typedef pair<P,P> P2;
#define pb push_back
#define mp make_pair
#define eps 1e-7
#define INF 1000000000
#define mod 1000000007
#define fi first
#define sc second
#define rep(i,x) for(int i=0;i<x;i++)
#define repn(i,x) for(int i=1;i<=x;i++)
#define SORT(x) sort(x.begin(),x.end())
#define ERASE(x) x.erase(unique(x.begin(),x.end()),x.end())
#define POSL(x,v) (lower_bound(x.begin(),x.end(),v)-x.begin())
#define POSU(x,v) (upper_bound(x.begin(),x.end(),v)-x.begin())
map<P,int>dp;
map<P,bool>ex;
vector<int>edge[200005];
int n;
bool ok[200005];
void dfs(int v,int u){
if(u!=-1){
dp[mp(u,v)] = 1;
ex[mp(u,v)] = ok[v];
}
rep(i,edge[v].size()){
if(edge[v][i]==u) continue;
dfs(edge[v][i],v);
if(u!=-1){
dp[mp(u,v)] = max(dp[mp(u,v)],dp[mp(v,edge[v][i])]+1);
ex[mp(u,v)] |= ex[mp(v,edge[v][i])];
}
}
}
void dfs2(int v,int u,int mx,bool EX){
EX |= ok[v];
priority_queue<int,vector<int>,greater<int> >S;
int cnt = 0;
rep(i,edge[v].size()){
if(edge[v][i]==u) continue;
S.push(dp[mp(v,edge[v][i])]);
if(S.size() == 3) S.pop();
cnt += ex[mp(v,edge[v][i])];
}
if(S.size() < 1) return;
S.push(0);
if(S.size() == 3) S.pop();
int a = S.top(); S.pop();
int b = S.top(); S.pop();
rep(i,edge[v].size()){
if(edge[v][i]==u) continue;
if(dp[mp(v,edge[v][i])] == b) dp[mp(edge[v][i],v)] = 1+max(mx,a);
else dp[mp(edge[v][i],v)] = 1+max(mx,b);
if(EX || cnt-ex[mp(v,edge[v][i])] >= 1){
ex[mp(edge[v][i],v)] = 1;
}
else{
ex[mp(edge[v][i],v)] = 0;
}
dfs2(edge[v][i],v,dp[mp(edge[v][i],v)],ex[mp(edge[v][i],v)]);
}
}
int main(){
scanf("%d",&n);
rep(i,n-1){
int a,b; scanf("%d%d",&a,&b);
a--; b--;
edge[a].pb(b);
edge[b].pb(a);
}
string s; cin>>s;
rep(i,n) if(s[i]=='1') ok[i]=true;
dfs(0,-1);
dfs2(0,-1,0,false);
ll ret = 0;
rep(i,n){
priority_queue<int,vector<int>,greater<int> >S;
for(int j=0;j<edge[i].size();j++){
S.push(dp[mp(i,edge[i][j])]);
if(S.size() == 3) S.pop();
}
int ub = 0;
if(S.size() == 2){
ub = max(ub,S.top());
}
int lb = INF;
if(ok[i]) lb = 0;
for(int j=0;j<edge[i].size();j++){
if(!ex[mp(i,edge[i][j])]) continue;
lb = min(lb,dp[mp(i,edge[i][j])]);
}
if(lb <= ub){
ret += (ub-lb+1);
}
}
rep(i,n){
rep(j,edge[i].size()){
int u = i,v = edge[i][j];
if(u > v) continue;
bool flag = 0;
if(dp[mp(v,u)] <= dp[mp(u,v)]){
flag |= ex[mp(v,u)];
}
if(dp[mp(v,u)] >= dp[mp(u,v)]){
flag |= ex[mp(u,v)];
}
if(flag) ret++;
}
}
cout << ret << endl;
}
Submission Info
Submission Time
2018-02-21 01:19:03+0900
Task
F - Black Radius
User
IH19980412
Language
C++14 (GCC 5.4.1)
Score
1900
Code Size
2724 Byte
Status
AC
Exec Time
1476 ms
Memory
111620 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:68:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.cpp:70:31: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int a,b; scanf("%d%d",&a,&b);
^
Judge Result
Set Name
Sample
Subtask
All
Score / Max Score
0 / 0
1300 / 1300
600 / 600
Status
Set Name
Test Cases
Sample
0_00.txt, 0_01.txt, 0_02.txt
Subtask
0_01.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt
All
0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 2_00.txt, 2_01.txt, 2_02.txt, 2_03.txt, 2_04.txt, 2_05.txt, 2_06.txt, 2_07.txt, 2_08.txt, 2_09.txt, 2_10.txt, 2_11.txt, 2_12.txt, 2_13.txt, 2_14.txt, 2_15.txt, 2_16.txt, 2_17.txt, 2_18.txt, 2_19.txt, 2_20.txt, 2_21.txt, 2_22.txt, 2_23.txt, 2_24.txt, 2_25.txt, 2_26.txt, 2_27.txt, 2_28.txt, 2_29.txt, 2_30.txt, 2_31.txt, 2_32.txt, 2_33.txt, 2_34.txt, 2_35.txt, 2_36.txt, 2_37.txt, 2_38.txt, 2_39.txt, 2_40.txt, 2_41.txt, 2_42.txt, 2_43.txt, 2_44.txt, 2_45.txt, 2_46.txt, 2_47.txt
Case Name
Status
Exec Time
Memory
0_00.txt
AC
3 ms
4992 KB
0_01.txt
AC
3 ms
4992 KB
0_02.txt
AC
3 ms
4992 KB
1_00.txt
AC
3 ms
4992 KB
1_01.txt
AC
1338 ms
111620 KB
1_02.txt
AC
1346 ms
93828 KB
1_03.txt
AC
1242 ms
61828 KB
1_04.txt
AC
1201 ms
61944 KB
1_05.txt
AC
1303 ms
62324 KB
1_06.txt
AC
1203 ms
61828 KB
1_07.txt
AC
1181 ms
61952 KB
1_08.txt
AC
1247 ms
65924 KB
1_09.txt
AC
1369 ms
86660 KB
1_10.txt
AC
1244 ms
82180 KB
1_11.txt
AC
1261 ms
110468 KB
1_12.txt
AC
1206 ms
71556 KB
1_13.txt
AC
1330 ms
84612 KB
1_14.txt
AC
1231 ms
71044 KB
1_15.txt
AC
1317 ms
66820 KB
1_16.txt
AC
1236 ms
75136 KB
1_17.txt
AC
1374 ms
81284 KB
1_18.txt
AC
1208 ms
61188 KB
1_19.txt
AC
1216 ms
61188 KB
1_20.txt
AC
1202 ms
61316 KB
1_21.txt
AC
1282 ms
65028 KB
1_22.txt
AC
1191 ms
61564 KB
1_23.txt
AC
1201 ms
61568 KB
1_24.txt
AC
1179 ms
64908 KB
1_25.txt
AC
1219 ms
69496 KB
1_26.txt
AC
1141 ms
60284 KB
1_27.txt
AC
1189 ms
61688 KB
1_28.txt
AC
1237 ms
63224 KB
1_29.txt
AC
1240 ms
72828 KB
2_00.txt
AC
3 ms
4992 KB
2_01.txt
AC
1446 ms
109316 KB
2_02.txt
AC
1476 ms
101636 KB
2_03.txt
AC
1359 ms
99332 KB
2_04.txt
AC
1348 ms
85764 KB
2_05.txt
AC
1349 ms
86404 KB
2_06.txt
AC
1352 ms
90244 KB
2_07.txt
AC
1243 ms
61572 KB
2_08.txt
AC
1256 ms
61700 KB
2_09.txt
AC
1277 ms
61828 KB
2_10.txt
AC
1232 ms
61816 KB
2_11.txt
AC
1204 ms
61944 KB
2_12.txt
AC
1211 ms
61944 KB
2_13.txt
AC
1217 ms
62196 KB
2_14.txt
AC
1305 ms
62324 KB
2_15.txt
AC
1435 ms
62324 KB
2_16.txt
AC
1216 ms
61572 KB
2_17.txt
AC
1167 ms
61700 KB
2_18.txt
AC
1139 ms
61828 KB
2_19.txt
AC
1209 ms
61700 KB
2_20.txt
AC
1212 ms
61956 KB
2_21.txt
AC
1208 ms
61956 KB
2_22.txt
AC
1225 ms
65284 KB
2_23.txt
AC
1192 ms
67840 KB
2_24.txt
AC
1194 ms
67076 KB
2_25.txt
AC
1295 ms
88196 KB
2_26.txt
AC
1337 ms
83332 KB
2_27.txt
AC
1348 ms
88192 KB
2_28.txt
AC
1200 ms
80512 KB
2_29.txt
AC
1333 ms
103300 KB
2_30.txt
AC
1273 ms
96004 KB
2_31.txt
AC
1316 ms
81412 KB
2_32.txt
AC
1192 ms
63236 KB
2_33.txt
AC
1263 ms
72064 KB
2_34.txt
AC
1285 ms
79108 KB
2_35.txt
AC
1300 ms
92804 KB
2_36.txt
AC
1334 ms
60932 KB
2_37.txt
AC
1281 ms
61316 KB
2_38.txt
AC
1250 ms
65924 KB
2_39.txt
AC
1243 ms
62336 KB
2_40.txt
AC
1213 ms
61688 KB
2_41.txt
AC
1103 ms
61316 KB
2_42.txt
AC
1176 ms
60920 KB
2_43.txt
AC
1310 ms
85124 KB
2_44.txt
AC
1169 ms
61176 KB
2_45.txt
AC
1275 ms
61944 KB
2_46.txt
AC
1272 ms
62836 KB
2_47.txt
AC
1180 ms
75444 KB